@joebigelow / wix / commits / 504f4dc9

Centralize all validating tests in a single fixture

This should prevent validation from running in parallel.

Rob Mensching committed Feb 8, 2022 at 12:15 UTC 504f4dc9d73af705c2509f65d910bb9b2e266ad8
3 files changed +163 -159
src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs
-153
@@ -14,92 +14,6 @@ namespace WixToolsetTest.CoreIntegration
14
15 public class ModuleFixture
16 {
17 - [Fact(Skip = "Flaky")]
18 - public void CanBuildAndValidateSimpleModule()
19 - {
20 - var folder = TestData.Get(@"TestData\SimpleModule");
21 -
22 - using (var fs = new DisposableFileSystem())
23 - {
24 - var intermediateFolder = fs.GetFolder();
25 -
26 - var result = WixRunner.Execute(new[]
27 - {
28 - "build",
29 - Path.Combine(folder, "Module.wxs"),
30 - "-loc", Path.Combine(folder, "Module.en-us.wxl"),
31 - "-bindpath", Path.Combine(folder, "data"),
32 - "-intermediateFolder", intermediateFolder,
33 - "-o", Path.Combine(intermediateFolder, @"bin\test.msm")
34 - });
35 -
36 - result.AssertSuccess();
37 -
38 - var msmPath = Path.Combine(intermediateFolder, @"bin\test.msm");
39 - Assert.True(File.Exists(msmPath));
40 - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
41 -
42 - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
43 - var section = intermediate.Sections.Single();
44 -
45 - var dirSymbols = section.Symbols.OfType<DirectorySymbol>().OrderBy(d => d.Id.Id).ToList();
46 - WixAssert.CompareLineByLine(new[]
47 - {
48 - "MergeRedirectFolder\tTARGETDIR\t.",
49 - "NotTheMergeRedirectFolder\tTARGETDIR\t.",
50 - "TARGETDIR\t\tSourceDir"
51 - }, dirSymbols.Select(d => String.Join("\t", d.Id.Id, d.ParentDirectoryRef, d.Name)).ToArray());
52 -
53 - var fileSymbols = section.Symbols.OfType<FileSymbol>().OrderBy(d => d.Id.Id).ToList();
54 - WixAssert.CompareLineByLine(new[]
55 - {
56 - $"File1\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt",
57 - $"File2\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt",
58 - }, fileSymbols.Select(fileSymbol => String.Join("\t", fileSymbol.Id.Id, fileSymbol[FileSymbolFields.Source].AsPath().Path, fileSymbol[FileSymbolFields.Source].PreviousValue.AsPath().Path)).ToArray());
59 -
60 - var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
61 - var fileRows = data.Tables["File"].Rows;
62 - WixAssert.CompareLineByLine(new[]
63 - {
64 - "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
65 - "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
66 - }, fileRows.Select(r => r.FieldAsString(0)).ToArray());
67 -
68 - var cabPath = Path.Combine(intermediateFolder, "msm-test.cab");
69 - Query.ExtractStream(msmPath, "MergeModule.CABinet", cabPath);
70 - var files = Query.GetCabinetFiles(cabPath);
71 - WixAssert.CompareLineByLine(new[]
72 - {
73 - "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
74 - "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
75 - }, files.Select(f => Path.Combine(f.Path, f.Name)).ToArray());
76 -
77 - var rows = Query.QueryDatabase(msmPath, new[] { "_SummaryInformation" });
78 - WixAssert.CompareLineByLine(new[]
79 - {
80 - "_SummaryInformation:Title\tMerge Module",
81 - "_SummaryInformation:Subject\tMergeModule1",
82 - "_SummaryInformation:Author\tExample Company",
83 - "_SummaryInformation:Keywords\tMergeModule, MSI, database",
84 - "_SummaryInformation:Comments\tThis merge module contains the logic and data required to install MergeModule1.",
85 - "_SummaryInformation:Template\tIntel;1033",
86 - "_SummaryInformation:CodePage\t1252",
87 - "_SummaryInformation:PageCount\t200",
88 - "_SummaryInformation:WordCount\t0",
89 - "_SummaryInformation:CharacterCount\t0",
90 - "_SummaryInformation:Security\t2",
91 - }, rows);
92 -
93 - var validationResult = WixRunner.Execute(new[]
94 - {
95 - "msi", "validate",
96 - "-intermediateFolder", intermediateFolder,
97 - msmPath
98 - });
99 - validationResult.AssertSuccess();
100 - }
101 - }
102 -
17 [Fact]
18 public void CanSuppressModularization()
19 {
@@ -133,72 +47,5 @@ namespace WixToolsetTest.CoreIntegration
47 }, rows);
48 }
49 }
136 -
137 - [Fact(Skip = "Flaky")]
138 - public void CanMergeModule()
139 - {
140 - var msmFolder = TestData.Get(@"TestData\SimpleModule");
141 - var folder = TestData.Get(@"TestData\SimpleMerge");
142 -
143 - using (var fs = new DisposableFileSystem())
144 - {
145 - var intermediateFolder = fs.GetFolder();
146 - var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi");
147 - var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab");
148 -
149 - var msmResult = WixRunner.Execute(new[]
150 - {
151 - "build",
152 - Path.Combine(msmFolder, "Module.wxs"),
153 - "-loc", Path.Combine(msmFolder, "Module.en-us.wxl"),
154 - "-bindpath", Path.Combine(msmFolder, "data"),
155 - "-intermediateFolder", intermediateFolder,
156 - "-o", Path.Combine(intermediateFolder, "bin", "test", "test.msm")
157 - });
158 -
159 - msmResult.AssertSuccess();
160 -
161 - var result = WixRunner.Execute(new[]
162 - {
163 - "build",
164 - Path.Combine(folder, "Package.wxs"),
165 - "-loc", Path.Combine(folder, "Package.en-us.wxl"),
166 - "-bindpath", Path.Combine(intermediateFolder, "bin", "test"),
167 - "-intermediateFolder", intermediateFolder,
168 - "-o", msiPath
169 - });
170 -
171 - result.AssertSuccess();
172 -
173 - var validationResult = WixRunner.Execute(new[]
174 - {
175 - "msi", "validate",
176 - "-intermediateFolder", intermediateFolder,
177 - msiPath
178 - });
179 - validationResult.AssertSuccess();
180 -
181 - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
182 - var section = intermediate.Sections.Single();
183 - Assert.Empty(section.Symbols.OfType<FileSymbol>());
184 -
185 - var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
186 - Assert.Empty(data.Tables["File"].Rows);
187 -
188 - var results = Query.QueryDatabase(msiPath, new[] { "File" });
189 - WixAssert.CompareLineByLine(new[]
190 - {
191 - "File:File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile1.txt\t17\t\t\t512\t1",
192 - "File:File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile2.txt\t17\t\t\t512\t2",
193 - }, results);
194 -
195 - var files = Query.GetCabinetFiles(cabPath);
196 - WixAssert.CompareLineByLine(new[]
197 - {
198 - "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
199 - "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE"
200 - }, files.Select(f => f.Name).ToArray());
201 - }
202 - }
50 }
51 }
src/wix/test/WixToolsetTest.CoreIntegration/ValidationFixture.cs
+161 -4
@@ -2,15 +2,172 @@
2
3 namespace WixToolsetTest.CoreIntegration
4 {
5 + using System;
6 using System.IO;
7 using System.Linq;
8 using WixBuildTools.TestSupport;
9 using WixToolset.Core.TestPackage;
10 + using WixToolset.Data;
11 + using WixToolset.Data.Symbols;
12 + using WixToolset.Data.WindowsInstaller;
13 using Xunit;
14
15 public class ValidationFixture
16 {
13 - [Fact(Skip = "Flaky")]
17 + [Fact]
18 + public void CanBuildAndValidateSimpleModule()
19 + {
20 + var folder = TestData.Get(@"TestData\SimpleModule");
21 +
22 + using (var fs = new DisposableFileSystem())
23 + {
24 + var intermediateFolder = fs.GetFolder();
25 +
26 + var result = WixRunner.Execute(new[]
27 + {
28 + "build",
29 + Path.Combine(folder, "Module.wxs"),
30 + "-loc", Path.Combine(folder, "Module.en-us.wxl"),
31 + "-bindpath", Path.Combine(folder, "data"),
32 + "-intermediateFolder", intermediateFolder,
33 + "-o", Path.Combine(intermediateFolder, @"bin\test.msm")
34 + });
35 +
36 + result.AssertSuccess();
37 +
38 + var msmPath = Path.Combine(intermediateFolder, @"bin\test.msm");
39 + Assert.True(File.Exists(msmPath));
40 + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
41 +
42 + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
43 + var section = intermediate.Sections.Single();
44 +
45 + var dirSymbols = section.Symbols.OfType<DirectorySymbol>().OrderBy(d => d.Id.Id).ToList();
46 + WixAssert.CompareLineByLine(new[]
47 + {
48 + "MergeRedirectFolder\tTARGETDIR\t.",
49 + "NotTheMergeRedirectFolder\tTARGETDIR\t.",
50 + "TARGETDIR\t\tSourceDir"
51 + }, dirSymbols.Select(d => String.Join("\t", d.Id.Id, d.ParentDirectoryRef, d.Name)).ToArray());
52 +
53 + var fileSymbols = section.Symbols.OfType<FileSymbol>().OrderBy(d => d.Id.Id).ToList();
54 + WixAssert.CompareLineByLine(new[]
55 + {
56 + $"File1\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt",
57 + $"File2\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt",
58 + }, fileSymbols.Select(fileSymbol => String.Join("\t", fileSymbol.Id.Id, fileSymbol[FileSymbolFields.Source].AsPath().Path, fileSymbol[FileSymbolFields.Source].PreviousValue.AsPath().Path)).ToArray());
59 +
60 + var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
61 + var fileRows = data.Tables["File"].Rows;
62 + WixAssert.CompareLineByLine(new[]
63 + {
64 + "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
65 + "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
66 + }, fileRows.Select(r => r.FieldAsString(0)).ToArray());
67 +
68 + var cabPath = Path.Combine(intermediateFolder, "msm-test.cab");
69 + Query.ExtractStream(msmPath, "MergeModule.CABinet", cabPath);
70 + var files = Query.GetCabinetFiles(cabPath);
71 + WixAssert.CompareLineByLine(new[]
72 + {
73 + "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
74 + "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
75 + }, files.Select(f => Path.Combine(f.Path, f.Name)).ToArray());
76 +
77 + var rows = Query.QueryDatabase(msmPath, new[] { "_SummaryInformation" });
78 + WixAssert.CompareLineByLine(new[]
79 + {
80 + "_SummaryInformation:Title\tMerge Module",
81 + "_SummaryInformation:Subject\tMergeModule1",
82 + "_SummaryInformation:Author\tExample Company",
83 + "_SummaryInformation:Keywords\tMergeModule, MSI, database",
84 + "_SummaryInformation:Comments\tThis merge module contains the logic and data required to install MergeModule1.",
85 + "_SummaryInformation:Template\tIntel;1033",
86 + "_SummaryInformation:CodePage\t1252",
87 + "_SummaryInformation:PageCount\t200",
88 + "_SummaryInformation:WordCount\t0",
89 + "_SummaryInformation:CharacterCount\t0",
90 + "_SummaryInformation:Security\t2",
91 + }, rows);
92 +
93 + var validationResult = WixRunner.Execute(new[]
94 + {
95 + "msi", "validate",
96 + "-intermediateFolder", intermediateFolder,
97 + msmPath
98 + });
99 + validationResult.AssertSuccess();
100 + }
101 + }
102 +
103 + [Fact]
104 + public void CanMergeModuleAndValidate()
105 + {
106 + var msmFolder = TestData.Get(@"TestData\SimpleModule");
107 + var folder = TestData.Get(@"TestData\SimpleMerge");
108 +
109 + using (var fs = new DisposableFileSystem())
110 + {
111 + var intermediateFolder = fs.GetFolder();
112 + var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi");
113 + var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab");
114 +
115 + var msmResult = WixRunner.Execute(new[]
116 + {
117 + "build",
118 + Path.Combine(msmFolder, "Module.wxs"),
119 + "-loc", Path.Combine(msmFolder, "Module.en-us.wxl"),
120 + "-bindpath", Path.Combine(msmFolder, "data"),
121 + "-intermediateFolder", intermediateFolder,
122 + "-o", Path.Combine(intermediateFolder, "bin", "test", "test.msm")
123 + });
124 +
125 + msmResult.AssertSuccess();
126 +
127 + var result = WixRunner.Execute(new[]
128 + {
129 + "build",
130 + Path.Combine(folder, "Package.wxs"),
131 + "-loc", Path.Combine(folder, "Package.en-us.wxl"),
132 + "-bindpath", Path.Combine(intermediateFolder, "bin", "test"),
133 + "-intermediateFolder", intermediateFolder,
134 + "-o", msiPath
135 + });
136 +
137 + result.AssertSuccess();
138 +
139 + var validationResult = WixRunner.Execute(new[]
140 + {
141 + "msi", "validate",
142 + "-intermediateFolder", intermediateFolder,
143 + msiPath
144 + });
145 + validationResult.AssertSuccess();
146 +
147 + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
148 + var section = intermediate.Sections.Single();
149 + Assert.Empty(section.Symbols.OfType<FileSymbol>());
150 +
151 + var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
152 + Assert.Empty(data.Tables["File"].Rows);
153 +
154 + var results = Query.QueryDatabase(msiPath, new[] { "File" });
155 + WixAssert.CompareLineByLine(new[]
156 + {
157 + "File:File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile1.txt\t17\t\t\t512\t1",
158 + "File:File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile2.txt\t17\t\t\t512\t2",
159 + }, results);
160 +
161 + var files = Query.GetCabinetFiles(cabPath);
162 + WixAssert.CompareLineByLine(new[]
163 + {
164 + "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE",
165 + "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE"
166 + }, files.Select(f => f.Name).ToArray());
167 + }
168 + }
169 +
170 + [Fact]
171 public void CanValidateMsiWithIceIssues()
172 {
173 var folder = TestData.Get(@"TestData");
@@ -19,7 +176,7 @@ namespace WixToolsetTest.CoreIntegration
176 {
177 var baseFolder = fs.GetFolder();
178 var intermediateFolder = Path.Combine(baseFolder, "obj");
22 - var msiPath = Path.Combine(baseFolder, @"bin", "test.msi");
179 + var msiPath = Path.Combine(baseFolder, @"bin", "CanValidateMsiWithIceIssues.msi");
180
181 var result = WixRunner.Execute(new[]
182 {
@@ -50,7 +207,7 @@ namespace WixToolsetTest.CoreIntegration
207 }
208 }
209
53 - [Fact(Skip = "Flaky")]
210 + [Fact]
211 public void CanValidateMsiSuppressIceError()
212 {
213 var folder = TestData.Get(@"TestData");
@@ -90,7 +247,7 @@ namespace WixToolsetTest.CoreIntegration
247 }
248 }
249
93 - [Fact(Skip = "Flaky")]
250 + [Fact]
251 public void CanValidateMsiWithWarningsAsErrors()
252 {
253 var folder = TestData.Get(@"TestData");
src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
+2 -2
@@ -193,7 +193,7 @@ namespace WixToolsetTest.Sdk
193 }
194 }
195
196 - [Theory(Skip = "Flaky")]
196 + [Theory]
197 [InlineData(BuildSystem.DotNetCoreSdk)]
198 [InlineData(BuildSystem.MSBuild)]
199 [InlineData(BuildSystem.MSBuild64)]
@@ -320,7 +320,7 @@ namespace WixToolsetTest.Sdk
320 }
321 }
322
323 - [Theory(Skip = "Flaky")]
323 + [Theory]
324 [InlineData(BuildSystem.DotNetCoreSdk)]
325 [InlineData(BuildSystem.MSBuild)]
326 [InlineData(BuildSystem.MSBuild64)]