aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2024-03-07 20:48:58 -0500
committerBob Arnson <github@bobs.org>2024-03-07 21:57:09 -0500
commitd8c4f61e080a3950faf8fb46b0a5c849988fec8e (patch)
tree02143d0aef32322eab9fcc32ac64a2b73b706551
parent5baa1dfe8ba2a3bd4728bca118fe1de225f848d4 (diff)
downloadwix-d8c4f61e080a3950faf8fb46b0a5c849988fec8e.tar.gz
wix-d8c4f61e080a3950faf8fb46b0a5c849988fec8e.tar.bz2
wix-d8c4f61e080a3950faf8fb46b0a5c849988fec8e.zip
Add tests demonstrating linker error.
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs66
-rw-r--r--src/ext/UI/ui.cmd2
2 files changed, 50 insertions, 18 deletions
diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
index c43af04b..610fd5ed 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
@@ -19,7 +19,7 @@ namespace WixToolsetTest.UI
19 var bindFolder = TestData.Get(@"TestData", "data"); 19 var bindFolder = TestData.Get(@"TestData", "data");
20 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 20 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
21 21
22 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent"); 22 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
23 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 23 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
24 WixAssert.CompareLineByLine(new[] 24 WixAssert.CompareLineByLine(new[]
25 { 25 {
@@ -46,6 +46,11 @@ namespace WixToolsetTest.UI
46 "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t1", 46 "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t1",
47 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2", 47 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2",
48 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 48 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
49 WixAssert.CompareLineByLine(new[]
50 {
51 "InstallUISequence:AdvancedWelcomeEulaDlg\tNOT Installed\t1296",
52 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1295",
53 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
49 } 54 }
50 55
51 [Fact] 56 [Fact]
@@ -55,7 +60,7 @@ namespace WixToolsetTest.UI
55 var bindFolder = TestData.Get(@"TestData", "data"); 60 var bindFolder = TestData.Get(@"TestData", "data");
56 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 61 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
57 62
58 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent"); 63 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
59 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 64 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
60 WixAssert.CompareLineByLine(new[] 65 WixAssert.CompareLineByLine(new[]
61 { 66 {
@@ -91,7 +96,7 @@ namespace WixToolsetTest.UI
91 var bindFolder = TestData.Get(@"TestData", "data"); 96 var bindFolder = TestData.Get(@"TestData", "data");
92 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 97 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
93 98
94 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent"); 99 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
95 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 100 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
96 WixAssert.CompareLineByLine(new[] 101 WixAssert.CompareLineByLine(new[]
97 { 102 {
@@ -120,14 +125,14 @@ namespace WixToolsetTest.UI
120 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 125 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
121 } 126 }
122 127
123 [Fact] 128 [Fact(Skip = "Linker problem")]
124 public void CanBuildUsingWixUIFeatureTree() 129 public void CanBuildUsingWixUIFeatureTree()
125 { 130 {
126 var folder = TestData.Get(@"TestData", "WixUI_FeatureTree"); 131 var folder = TestData.Get(@"TestData", "WixUI_FeatureTree");
127 var bindFolder = TestData.Get(@"TestData", "data"); 132 var bindFolder = TestData.Get(@"TestData", "data");
128 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 133 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
129 134
130 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent"); 135 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
131 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 136 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
132 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 137 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
133 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t"))); 138 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t")));
@@ -150,17 +155,22 @@ namespace WixToolsetTest.UI
150 { 155 {
151 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1", 156 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1",
152 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 157 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
158 WixAssert.CompareLineByLine(new[]
159 {
160 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
161 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
153 } 162 }
154 163
155 [Fact] 164 [Fact(Skip = "Linker problem")]
156 public void CanBuildUsingWixUIInstallDirWithCustomizedEula() 165 public void CanBuildWithWixUIInstallDirWithCustomizedEula()
157 { 166 {
158 var folder = TestData.Get(@"TestData", "WixUI_InstallDir"); 167 var folder = TestData.Get(@"TestData", "WixUI_InstallDir");
159 var bindFolder = TestData.Get(@"TestData", "data"); 168 var bindFolder = TestData.Get(@"TestData", "data");
160 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 169 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
161 170
162 var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent"); 171 var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
163 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 172 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
173 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
164 WixAssert.CompareLineByLine(new[] 174 WixAssert.CompareLineByLine(new[]
165 { 175 {
166 "Binary:WixUI_Bmp_Banner\t[Binary data]", 176 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -186,6 +196,10 @@ namespace WixToolsetTest.UI
186 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2", 196 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2",
187 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1", 197 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
188 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 198 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
199 WixAssert.CompareLineByLine(new[]
200 {
201 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
202 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
189 } 203 }
190 204
191 [Fact] 205 [Fact]
@@ -195,7 +209,7 @@ namespace WixToolsetTest.UI
195 var bindFolder = TestData.Get(@"TestData", "data"); 209 var bindFolder = TestData.Get(@"TestData", "data");
196 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 210 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
197 211
198 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent"); 212 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
199 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t")); 213 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t"));
200 WixAssert.CompareLineByLine(new[] 214 WixAssert.CompareLineByLine(new[]
201 { 215 {
@@ -215,6 +229,11 @@ namespace WixToolsetTest.UI
215 { 229 {
216 "ControlEvent:WelcomeEulaDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1", 230 "ControlEvent:WelcomeEulaDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
217 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 231 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
232 WixAssert.CompareLineByLine(new[]
233 {
234 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1295",
235 "InstallUISequence:WelcomeEulaDlg\tNOT Installed\t1296",
236 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
218 } 237 }
219 238
220 [Fact] 239 [Fact]
@@ -255,14 +274,14 @@ namespace WixToolsetTest.UI
255 } 274 }
256 } 275 }
257 276
258 [Fact] 277 [Fact(Skip = "Linker problem")]
259 public void CanBuildUsingWixUIMondo() 278 public void CanBuildUsingWixUIMondo()
260 { 279 {
261 var folder = TestData.Get(@"TestData", "WixUI_Mondo"); 280 var folder = TestData.Get(@"TestData", "WixUI_Mondo");
262 var bindFolder = TestData.Get(@"TestData", "data"); 281 var bindFolder = TestData.Get(@"TestData", "data");
263 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 282 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
264 283
265 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent"); 284 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
266 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 285 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
267 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 286 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
268 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t")); 287 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t"));
@@ -286,6 +305,10 @@ namespace WixToolsetTest.UI
286 "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t3", 305 "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t3",
287 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1", 306 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
288 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 307 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
308 WixAssert.CompareLineByLine(new[]
309 {
310 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1295",
311 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
289 } 312 }
290 313
291 [Fact] 314 [Fact]
@@ -302,14 +325,14 @@ namespace WixToolsetTest.UI
302 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray()); 325 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray());
303 } 326 }
304 327
305 [Fact] 328 [Fact(Skip = "Linker problem")]
306 public void CanBuildUsingWithInstallDirAndRemovedDialog() 329 public void CanBuildWithInstallDirAndRemovedDialog()
307 { 330 {
308 var folder = TestData.Get(@"TestData", "InstallDir_NoLicense"); 331 var folder = TestData.Get(@"TestData", "InstallDir_NoLicense");
309 var bindFolder = TestData.Get(@"TestData", "data"); 332 var bindFolder = TestData.Get(@"TestData", "data");
310 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 333 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
311 334
312 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent"); 335 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
313 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 336 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
314 WixAssert.CompareLineByLine(new[] 337 WixAssert.CompareLineByLine(new[]
315 { 338 {
@@ -336,16 +359,21 @@ namespace WixToolsetTest.UI
336 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 359 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
337 360
338 Assert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray()); 361 Assert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray());
362
363 WixAssert.CompareLineByLine(new[]
364 {
365 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
366 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
339 } 367 }
340 368
341 [Fact] 369 [Fact(Skip = "Linker problem")]
342 public void CanBuildUsingWithInstallDirAndAddedDialog() 370 public void CanBuildWithInstallDirAndAddedDialog()
343 { 371 {
344 var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg"); 372 var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg");
345 var bindFolder = TestData.Get(@"TestData", "data"); 373 var bindFolder = TestData.Get(@"TestData", "data");
346 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 374 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
347 375
348 var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent"); 376 var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
349 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 377 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
350 WixAssert.CompareLineByLine(new[] 378 WixAssert.CompareLineByLine(new[]
351 { 379 {
@@ -372,6 +400,10 @@ namespace WixToolsetTest.UI
372 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t2", 400 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t2",
373 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1", 401 "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1",
374 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 402 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
403 WixAssert.CompareLineByLine(new[]
404 {
405 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
406 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
375 407
376 Assert.Equal(8, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count()); 408 Assert.Equal(8, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count());
377 Assert.Equal(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count()); 409 Assert.Equal(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count());
diff --git a/src/ext/UI/ui.cmd b/src/ext/UI/ui.cmd
index 67ee3810..a990db91 100644
--- a/src/ext/UI/ui.cmd
+++ b/src/ext/UI/ui.cmd
@@ -23,7 +23,7 @@
23msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\ext_ui_build.binlog || exit /b 23msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\ext_ui_build.binlog || exit /b
24 24
25:: Test 25:: Test
26:: dotnet test -c %_C% --no-build test\WixToolsetTest.UI || exit /b 26dotnet test -c %_C% --no-build test\WixToolsetTest.UI || exit /b
27 27
28:: Pack 28:: Pack
29msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.UI.wixext.csproj || exit /b 29msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.UI.wixext.csproj || exit /b