aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-02-22 20:23:43 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-02-22 23:37:57 -0600
commit8e8f724d90c6835febb8b5865009746aea73a334 (patch)
treeb255c0a7232af8d24bcf44fd476b95bdfdcfe777 /src/test
parent0740d93ca8be06ec0e5da5b51ceff52f67ab5bf5 (diff)
downloadwix-8e8f724d90c6835febb8b5865009746aea73a334.tar.gz
wix-8e8f724d90c6835febb8b5865009746aea73a334.tar.bz2
wix-8e8f724d90c6835febb8b5865009746aea73a334.zip
Add UnsafeUninstall action.
Fixes #6721
Diffstat (limited to 'src/test')
-rw-r--r--src/test/burn/WixTestTools/BundleInstaller.cs30
-rw-r--r--src/test/burn/WixTestTools/MSIExec.cs5
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/ForwardCompatibleBundleTests.cs46
3 files changed, 74 insertions, 7 deletions
diff --git a/src/test/burn/WixTestTools/BundleInstaller.cs b/src/test/burn/WixTestTools/BundleInstaller.cs
index a49c4024..2b449ebf 100644
--- a/src/test/burn/WixTestTools/BundleInstaller.cs
+++ b/src/test/burn/WixTestTools/BundleInstaller.cs
@@ -3,6 +3,7 @@
3namespace WixTestTools 3namespace WixTestTools
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic;
6 using System.IO; 7 using System.IO;
7 using System.Text; 8 using System.Text;
8 9
@@ -131,6 +132,35 @@ namespace WixTestTools
131 } 132 }
132 133
133 /// <summary> 134 /// <summary>
135 /// Uninstalls the bundle unsafely with optional arguments.
136 /// </summary>
137 /// <param name="expectedExitCode">Expected exit code, defaults to success.</param>
138 /// <param name="arguments">Optional arguments to pass to the tool.</param>
139 /// <returns>Path to the generated log file.</returns>
140 public string UnsafeUninstall(int expectedExitCode = (int)MSIExec.MSIExecReturnCode.SUCCESS, params string[] arguments)
141 {
142 var newArgumentList = new List<string>();
143 newArgumentList.Add("-unsafeuninstall");
144 newArgumentList.AddRange(arguments);
145 return this.RunBundleWithArguments(expectedExitCode, MSIExec.MSIExecMode.Custom, newArgumentList.ToArray());
146 }
147
148 /// <summary>
149 /// Uninstalls the bundle unsafely at the given path with optional arguments.
150 /// </summary>
151 /// <param name="bundlePath">This should be the bundle in the package cache.</param>
152 /// <param name="expectedExitCode">Expected exit code, defaults to success.</param>
153 /// <param name="arguments">Optional arguments to pass to the tool.</param>
154 /// <returns>Path to the generated log file.</returns>
155 public string UnsafeUninstall(string bundlePath, int expectedExitCode = (int)MSIExec.MSIExecReturnCode.SUCCESS, params string[] arguments)
156 {
157 var newArgumentList = new List<string>();
158 newArgumentList.Add("-unsafeuninstall");
159 newArgumentList.AddRange(arguments);
160 return this.RunBundleWithArguments(expectedExitCode, MSIExec.MSIExecMode.Custom, newArgumentList.ToArray(), bundlePath: bundlePath);
161 }
162
163 /// <summary>
134 /// Executes the bundle with optional arguments. 164 /// Executes the bundle with optional arguments.
135 /// </summary> 165 /// </summary>
136 /// <param name="expectedExitCode">Expected exit code.</param> 166 /// <param name="expectedExitCode">Expected exit code.</param>
diff --git a/src/test/burn/WixTestTools/MSIExec.cs b/src/test/burn/WixTestTools/MSIExec.cs
index 8dce96cf..a10a48d6 100644
--- a/src/test/burn/WixTestTools/MSIExec.cs
+++ b/src/test/burn/WixTestTools/MSIExec.cs
@@ -697,6 +697,11 @@ namespace WixTestTools
697 /// Uninstalls the product as part of cleanup 697 /// Uninstalls the product as part of cleanup
698 /// </summary> 698 /// </summary>
699 Cleanup, 699 Cleanup,
700
701 /// <summary>
702 /// No action automatically added to arguments
703 /// </summary>
704 Custom,
700 } 705 }
701 706
702 /// <summary> 707 /// <summary>
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/ForwardCompatibleBundleTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/ForwardCompatibleBundleTests.cs
index eb649c86..357cf515 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/ForwardCompatibleBundleTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/ForwardCompatibleBundleTests.cs
@@ -18,6 +18,38 @@ namespace WixToolsetTest.BurnE2E
18 private const string V200 = "2.0.0.0"; 18 private const string V200 = "2.0.0.0";
19 19
20 [Fact] 20 [Fact]
21 public void CanIgnoreBundleDependentForUnsafeUninstall()
22 {
23 string providerId = BundleAProviderId;
24 string parent = "~BundleAv1";
25 string parentSwitch = String.Concat("-parent ", parent);
26
27 var packageAv1 = this.CreatePackageInstaller("PackageAv1");
28 var bundleAv1 = this.CreateBundleInstaller("BundleAv1");
29 var testBAController = this.CreateTestBAController();
30
31 packageAv1.VerifyInstalled(false);
32
33 // Install the v1 bundle with a parent.
34 bundleAv1.Install(arguments: parentSwitch);
35 bundleAv1.VerifyRegisteredAndInPackageCache();
36
37 packageAv1.VerifyInstalled(true);
38 Assert.True(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out var actualProviderVersion));
39 Assert.Equal(V100, actualProviderVersion);
40 Assert.True(BundleRegistration.DependencyDependentExists(providerId, parent));
41
42 // Cancel package B right away.
43 testBAController.SetPackageCancelExecuteAtProgress("PackageA", 1);
44
45 bundleAv1.UnsafeUninstall((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT);
46 bundleAv1.VerifyUnregisteredAndRemovedFromPackageCache();
47
48 packageAv1.VerifyInstalled(true);
49 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
50 }
51
52 [Fact]
21 public void CanTrack1ForwardCompatibleDependentThroughMajorUpgrade() 53 public void CanTrack1ForwardCompatibleDependentThroughMajorUpgrade()
22 { 54 {
23 string providerId = BundleAProviderId; 55 string providerId = BundleAProviderId;
@@ -70,7 +102,7 @@ namespace WixToolsetTest.BurnE2E
70 102
71 packageAv1.VerifyInstalled(false); 103 packageAv1.VerifyInstalled(false);
72 packageAv2.VerifyInstalled(false); 104 packageAv2.VerifyInstalled(false);
73 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 105 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
74 } 106 }
75 107
76 [Fact] 108 [Fact]
@@ -116,7 +148,7 @@ namespace WixToolsetTest.BurnE2E
116 148
117 packageAv1.VerifyInstalled(false); 149 packageAv1.VerifyInstalled(false);
118 packageAv2.VerifyInstalled(false); 150 packageAv2.VerifyInstalled(false);
119 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 151 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
120 } 152 }
121 153
122 [Fact] 154 [Fact]
@@ -198,7 +230,7 @@ namespace WixToolsetTest.BurnE2E
198 230
199 packageAv1.VerifyInstalled(false); 231 packageAv1.VerifyInstalled(false);
200 packageAv2.VerifyInstalled(false); 232 packageAv2.VerifyInstalled(false);
201 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 233 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
202 } 234 }
203 235
204 [Fact] 236 [Fact]
@@ -280,7 +312,7 @@ namespace WixToolsetTest.BurnE2E
280 312
281 packageCv1.VerifyInstalled(false); 313 packageCv1.VerifyInstalled(false);
282 packageCv2.VerifyInstalled(false); 314 packageCv2.VerifyInstalled(false);
283 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 315 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
284 } 316 }
285 317
286 [Fact] 318 [Fact]
@@ -366,7 +398,7 @@ namespace WixToolsetTest.BurnE2E
366 398
367 packageAv1.VerifyInstalled(false); 399 packageAv1.VerifyInstalled(false);
368 packageAv2.VerifyInstalled(false); 400 packageAv2.VerifyInstalled(false);
369 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 401 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
370 } 402 }
371 403
372 [Fact] 404 [Fact]
@@ -414,7 +446,7 @@ namespace WixToolsetTest.BurnE2E
414 446
415 packageAv1.VerifyInstalled(false); 447 packageAv1.VerifyInstalled(false);
416 packageAv2.VerifyInstalled(false); 448 packageAv2.VerifyInstalled(false);
417 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 449 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
418 } 450 }
419 451
420 [Fact] 452 [Fact]
@@ -463,7 +495,7 @@ namespace WixToolsetTest.BurnE2E
463 495
464 packageAv1.VerifyInstalled(false); 496 packageAv1.VerifyInstalled(false);
465 packageAv2.VerifyInstalled(false); 497 packageAv2.VerifyInstalled(false);
466 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out actualProviderVersion)); 498 Assert.False(BundleRegistration.TryGetDependencyProviderValue(providerId, "Version", out _));
467 } 499 }
468 } 500 }
469} 501}