summaryrefslogtreecommitdiff
path: root/src/test/burn/WixToolsetTest.BurnE2E
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E')
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/BurnE2ETests.cs17
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs4
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs99
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/Utilities/IWebServer.cs (renamed from src/test/burn/WixToolsetTest.BurnE2E/IWebServer.cs)0
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs (renamed from src/test/burn/WixToolsetTest.BurnE2E/TestBAController.cs)0
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestExeTool.cs17
6 files changed, 135 insertions, 2 deletions
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/BurnE2ETests.cs b/src/test/burn/WixToolsetTest.BurnE2E/BurnE2ETests.cs
index 6664b849..5caedacb 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/BurnE2ETests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/BurnE2ETests.cs
@@ -31,6 +31,23 @@ namespace WixToolsetTest.BurnE2E
31 this.Installers.Push(installer); 31 this.Installers.Push(installer);
32 } 32 }
33 33
34 protected ArpEntryInstaller CreateArpEntryInstaller(string id, bool perMachine = true, bool x64 = false)
35 {
36 var installer = new ArpEntryInstaller(this.TestContext, id, perMachine, x64);
37 this.Installers.Push(installer);
38 return installer;
39 }
40
41 protected ArpEntryInstaller CreateArpEntryInstaller(BundleInstaller bundleInstaller, string packageId)
42 {
43 if (!bundleInstaller.TryGetArpEntryExePackageConfiguration(packageId, out var arpId, out _, out var arpWin64, out var perMachine))
44 {
45 return null;
46 }
47
48 return this.CreateArpEntryInstaller(arpId, perMachine, arpWin64);
49 }
50
34 protected BundleInstaller CreateBundleInstaller(string name) 51 protected BundleInstaller CreateBundleInstaller(string name)
35 { 52 {
36 var installer = new BundleInstaller(this.TestContext, name); 53 var installer = new BundleInstaller(this.TestContext, name);
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs
index f5a1cda8..e5e3259f 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs
@@ -33,12 +33,12 @@ namespace WixToolsetTest.BurnE2E
33 33
34 if (!File.Exists(targetFilePath)) 34 if (!File.Exists(targetFilePath))
35 { 35 {
36 var testTool = new TestTool(Path.Combine(TestData.Get(), "win-x86", "TestExe.exe")) 36 var testExeTool = new TestExeTool
37 { 37 {
38 Arguments = "/lf \"" + targetFilePath + $"|{FiveGB}\"", 38 Arguments = "/lf \"" + targetFilePath + $"|{FiveGB}\"",
39 ExpectedExitCode = 0, 39 ExpectedExitCode = 0,
40 }; 40 };
41 testTool.Run(true); 41 testExeTool.Run(true);
42 } 42 }
43 } 43 }
44 44
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs
new file mode 100644
index 00000000..dc6515b5
--- /dev/null
+++ b/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs
@@ -0,0 +1,99 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.BurnE2E
4{
5 using WixTestTools;
6 using Xunit;
7 using Xunit.Abstractions;
8
9 public class ExePackageTests : BurnE2ETests
10 {
11 public ExePackageTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
12
13 [RuntimeFact]
14 public void CanInstallAndUninstallPerMachineArpEntryExePackage()
15 {
16 const string arpId = "{4D9EC36A-1E63-4244-875C-3ECB0A2CAE30}";
17 var perMachineArpEntryExePackageBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackage");
18 var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageBundle, "TestExe");
19
20 arpEntryExePackage.VerifyRegistered(false);
21
22 var installLogPath = perMachineArpEntryExePackageBundle.Install();
23 perMachineArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache();
24 arpEntryExePackage.VerifyRegistered(true);
25
26 LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"");
27
28 var uninstallLogPath = perMachineArpEntryExePackageBundle.Uninstall();
29 perMachineArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache();
30 arpEntryExePackage.VerifyRegistered(false);
31
32 LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}");
33 }
34
35 [RuntimeFact]
36 public void CanUninstallPerMachineArpEntryExePackageOnRollback()
37 {
38 const string arpId = "{80E90929-EEA5-48A7-A680-A0237A1CAD84}";
39 var perMachineArpEntryExePackageFailureBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackageFailure");
40 var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageFailureBundle, "TestExe");
41
42 arpEntryExePackage.VerifyRegistered(false);
43
44 var installLogPath = perMachineArpEntryExePackageFailureBundle.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE);
45 perMachineArpEntryExePackageFailureBundle.VerifyUnregisteredAndRemovedFromPackageCache();
46 arpEntryExePackage.VerifyRegistered(false);
47
48 LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"");
49 LogVerifier.MessageInLogFile(installLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}");
50 }
51
52 [RuntimeFact]
53 public void CanInstallAndUninstallPerUserArpEntryExePackage()
54 {
55 const string arpId = "{9B5300C7-9B34-4670-9614-185B02AB87EF}";
56 var perUserArpEntryExePackageBundle = this.CreateBundleInstaller(@"PerUserArpEntryExePackage");
57 var arpEntryExePackage = this.CreateArpEntryInstaller(perUserArpEntryExePackageBundle, "TestExe");
58
59 arpEntryExePackage.VerifyRegistered(false);
60
61 var installLogPath = perUserArpEntryExePackageBundle.Install();
62 perUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache();
63 arpEntryExePackage.VerifyRegistered(true);
64
65 LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"");
66
67 var uninstallLogPath = perUserArpEntryExePackageBundle.Uninstall();
68 perUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache();
69 arpEntryExePackage.VerifyRegistered(false);
70
71 LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}");
72 }
73
74 [RuntimeFact]
75 public void FailsUninstallWhenPerUserArpEntryExePackageMissingQuietUninstallString()
76 {
77 const string arpId = "{DE9F8594-5856-4454-AB10-3C01ED246D7D}";
78 var brokenPerUserArpEntryExePackageBundle = this.CreateBundleInstaller(@"BrokenPerUserArpEntryExePackage");
79 var arpEntryExePackage = this.CreateArpEntryInstaller(brokenPerUserArpEntryExePackageBundle, "TestExe");
80
81 arpEntryExePackage.VerifyRegistered(false);
82 brokenPerUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache();
83
84 var installLogPath = brokenPerUserArpEntryExePackageBundle.Install();
85 brokenPerUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache();
86 arpEntryExePackage.VerifyRegistered(true);
87
88 LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\"");
89
90 brokenPerUserArpEntryExePackageBundle.Uninstall((int)MSIExec.MSIExecReturnCode.ERROR_INVALID_PARAMETER);
91 brokenPerUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache();
92
93 arpEntryExePackage.Unregister();
94
95 brokenPerUserArpEntryExePackageBundle.Uninstall();
96 brokenPerUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache();
97 }
98 }
99}
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/IWebServer.cs b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/IWebServer.cs
index a4d46d48..a4d46d48 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/IWebServer.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/IWebServer.cs
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/TestBAController.cs b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs
index 8e6611a2..8e6611a2 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/TestBAController.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestExeTool.cs b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestExeTool.cs
new file mode 100644
index 00000000..a02299d7
--- /dev/null
+++ b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestExeTool.cs
@@ -0,0 +1,17 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixTestTools
4{
5 using System.IO;
6 using WixBuildTools.TestSupport;
7
8 public class TestExeTool : TestTool
9 {
10 private static readonly string TestExePath32 = Path.Combine(TestData.Get(), "win-x86", "TestExe.exe");
11
12 public TestExeTool()
13 : base(TestExePath32)
14 {
15 }
16 }
17}