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)]