diff options
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E')
-rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/BurnE2ETests.cs | 17 | ||||
-rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs | 4 | ||||
-rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs | 99 | ||||
-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.cs | 17 |
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 | |||
3 | namespace 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 | |||
3 | namespace 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 | } | ||