summaryrefslogtreecommitdiff
path: root/src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs')
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/PatchTests.cs137
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
3namespace 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}