diff options
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs')
-rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs new file mode 100644 index 00000000..0c7fdc98 --- /dev/null +++ b/src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs | |||
@@ -0,0 +1,137 @@ | |||
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 System; | ||
6 | using System.IO; | ||
7 | using System.Xml; | ||
8 | using Xunit; | ||
9 | using Xunit.Abstractions; | ||
10 | |||
11 | public class PatchTests : BurnE2ETests | ||
12 | { | ||
13 | public PatchTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } | ||
14 | |||
15 | [Fact] | ||
16 | public void CanRunDetectMultipleTimesWithPatches() | ||
17 | { | ||
18 | var testBAController = this.CreateTestBAController(); | ||
19 | testBAController.SetRedetectCount(1); | ||
20 | |||
21 | this.CanInstallBundleWithPatchThenRemoveIt(); | ||
22 | } | ||
23 | |||
24 | [Fact] | ||
25 | public void CanInstallBundleWithPatchThenRemoveIt() | ||
26 | { | ||
27 | var originalVersion = "1.0.0.0"; | ||
28 | var patchedVersion = "1.0.1.0"; | ||
29 | var testRegistryValue = "PackageA"; | ||
30 | |||
31 | var packageAv1 = this.CreatePackageInstaller("PackageAv1"); | ||
32 | var bundleA = this.CreateBundleInstaller("BundleA"); | ||
33 | var bundlePatchA = this.CreateBundleInstaller("BundlePatchA"); | ||
34 | |||
35 | bundleA.Install(); | ||
36 | bundleA.VerifyRegisteredAndInPackageCache(); | ||
37 | |||
38 | packageAv1.VerifyInstalled(true); | ||
39 | packageAv1.VerifyTestRegistryValue(testRegistryValue, originalVersion); | ||
40 | |||
41 | bundlePatchA.Install(); | ||
42 | bundlePatchA.VerifyRegisteredAndInPackageCache(); | ||
43 | |||
44 | packageAv1.VerifyTestRegistryValue(testRegistryValue, patchedVersion); | ||
45 | |||
46 | bundlePatchA.Uninstall(); | ||
47 | bundlePatchA.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
48 | |||
49 | packageAv1.VerifyTestRegistryValue(testRegistryValue, originalVersion); | ||
50 | |||
51 | bundleA.Uninstall(); | ||
52 | bundleA.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
53 | |||
54 | packageAv1.VerifyInstalled(false); | ||
55 | packageAv1.VerifyTestRegistryRootDeleted(); | ||
56 | } | ||
57 | |||
58 | [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6380")] | ||
59 | public void CanPatchSwidTag() | ||
60 | { | ||
61 | var originalVersion = "1.0.0.0"; | ||
62 | var patchedVersion = "1.0.1.0"; | ||
63 | var packageTagName = "~PatchTests - PackageA"; | ||
64 | var bundleTagName = "~PatchTests - BundleA"; | ||
65 | var bundlePatchTagName = "~PatchTests - BundlePatchA"; | ||
66 | |||
67 | this.CreatePackageInstaller("PackageAv1"); | ||
68 | var bundleA = this.CreateBundleInstaller("BundleA"); | ||
69 | var bundlePatchA = this.CreateBundleInstaller("BundlePatchA"); | ||
70 | |||
71 | bundleA.Install(); | ||
72 | VerifySwidTagVersion(bundleTagName, originalVersion); | ||
73 | VerifySwidTagVersion(packageTagName, originalVersion); | ||
74 | |||
75 | bundlePatchA.Install(); | ||
76 | VerifySwidTagVersion(bundlePatchTagName, patchedVersion); | ||
77 | VerifySwidTagVersion(packageTagName, patchedVersion); | ||
78 | |||
79 | bundlePatchA.Uninstall(); | ||
80 | VerifySwidTagVersion(packageTagName, originalVersion); | ||
81 | |||
82 | bundleA.Uninstall(); | ||
83 | VerifySwidTagVersion(bundleTagName, null); | ||
84 | VerifySwidTagVersion(packageTagName, null); | ||
85 | } | ||
86 | |||
87 | [Fact] | ||
88 | public void CanInstallBundleWithPatchesTargetingSingleProductThenRemoveIt() | ||
89 | { | ||
90 | var originalVersion = "1.0.0.0"; | ||
91 | var patchedVersion = "1.0.1.0"; | ||
92 | var testRegistryValue = "PackageA"; | ||
93 | var testRegistryValue2 = "PackageA2"; | ||
94 | |||
95 | var packageAv1 = this.CreatePackageInstaller("PackageAv1"); | ||
96 | var bundlePatchA2 = this.CreateBundleInstaller("BundlePatchA2"); | ||
97 | |||
98 | packageAv1.InstallProduct(); | ||
99 | packageAv1.VerifyInstalled(true); | ||
100 | packageAv1.VerifyTestRegistryValue(testRegistryValue, originalVersion); | ||
101 | packageAv1.VerifyTestRegistryValue(testRegistryValue2, originalVersion); | ||
102 | |||
103 | bundlePatchA2.Install(); | ||
104 | bundlePatchA2.VerifyRegisteredAndInPackageCache(); | ||
105 | |||
106 | packageAv1.VerifyTestRegistryValue(testRegistryValue, patchedVersion); | ||
107 | packageAv1.VerifyTestRegistryValue(testRegistryValue2, patchedVersion); | ||
108 | |||
109 | bundlePatchA2.Uninstall(); | ||
110 | bundlePatchA2.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
111 | |||
112 | packageAv1.VerifyTestRegistryValue(testRegistryValue, originalVersion); | ||
113 | packageAv1.VerifyTestRegistryValue(testRegistryValue2, originalVersion); | ||
114 | } | ||
115 | |||
116 | private static void VerifySwidTagVersion(string tagName, string expectedVersion) | ||
117 | { | ||
118 | var regidFolder = Environment.ExpandEnvironmentVariables(@"%ProgramData%\regid.1995-08.com.example"); | ||
119 | var tagPath = Path.Combine(regidFolder, "regid.1995-08.com.example " + tagName + ".swidtag"); | ||
120 | string version = null; | ||
121 | |||
122 | if (File.Exists(tagPath)) | ||
123 | { | ||
124 | var doc = new XmlDocument(); | ||
125 | doc.Load(tagPath); | ||
126 | |||
127 | var ns = new XmlNamespaceManager(doc.NameTable); | ||
128 | ns.AddNamespace("s", "http://standards.iso.org/iso/19770/-2/2009/schema.xsd"); | ||
129 | |||
130 | var versionNode = doc.SelectSingleNode("/s:software_identification_tag/s:product_version/s:name", ns); | ||
131 | version = versionNode?.InnerText ?? String.Empty; | ||
132 | } | ||
133 | |||
134 | Assert.Equal(expectedVersion, version); | ||
135 | } | ||
136 | } | ||
137 | } | ||