From 68ea7b2f8dccb48d69e8aeb960ce8cb29790e8c4 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Mon, 13 Mar 2023 21:20:09 -0400 Subject: Add tests for custom WixUI sets. --- .../TestData/InstallDir_NoLicense/Package.wxs | 82 ++++++++++++++++ .../TestData/InstallDir_SpecialDlg/Package.wxs | 106 +++++++++++++++++++++ .../TestData/WixUI_FeatureTree/Package.wxs | 11 ++- .../TestData/WixUI_Mondo/Package.wxs | 3 +- .../TestData/data/WixUIBannerBmp.png | Bin 0 -> 1203 bytes .../TestData/data/WixUIDialogBmp.png | Bin 0 -> 5045 bytes .../test/WixToolsetTest.UI/TestData/data/bpl.rtf | Bin 0 -> 279 bytes .../test/WixToolsetTest.UI/UIExtensionFixture.cs | 87 ++++++++++++++++- 8 files changed, 285 insertions(+), 4 deletions(-) create mode 100644 src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_NoLicense/Package.wxs create mode 100644 src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_SpecialDlg/Package.wxs create mode 100644 src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIBannerBmp.png create mode 100644 src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIDialogBmp.png create mode 100644 src/ext/UI/test/WixToolsetTest.UI/TestData/data/bpl.rtf diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_NoLicense/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_NoLicense/Package.wxs new file mode 100644 index 00000000..86b7453e --- /dev/null +++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_NoLicense/Package.wxs @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_SpecialDlg/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_SpecialDlg/Package.wxs new file mode 100644 index 00000000..35879fb3 --- /dev/null +++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_SpecialDlg/Package.wxs @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs index 7c4db223..aeb9b322 100644 --- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs +++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs @@ -1,4 +1,4 @@ - + @@ -13,6 +13,15 @@ + + + + diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs index 9eca9790..5bb7fa1a 100644 --- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs +++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs @@ -1,4 +1,4 @@ - + @@ -13,6 +13,7 @@ + diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIBannerBmp.png b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIBannerBmp.png new file mode 100644 index 00000000..40473017 Binary files /dev/null and b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIBannerBmp.png differ diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIDialogBmp.png b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIDialogBmp.png new file mode 100644 index 00000000..8a37f64c Binary files /dev/null and b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIDialogBmp.png differ diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/data/bpl.rtf b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/bpl.rtf new file mode 100644 index 00000000..b215a391 Binary files /dev/null and b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/bpl.rtf differ diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs index 7f9b7313..17eec347 100644 --- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs +++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs @@ -143,6 +143,7 @@ namespace WixToolsetTest.UI }, results.Where(r => r.StartsWith("Binary:")).ToArray()); WixAssert.CompareLineByLine(new[] { + "CustomAction:SetWIXUI_EXITDIALOGOPTIONALTEXT\t51\tWIXUI_EXITDIALOGOPTIONALTEXT\tThank you for installing [ProductName].\t", "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t", }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); WixAssert.CompareLineByLine(new[] @@ -152,13 +153,13 @@ namespace WixToolsetTest.UI } [Fact] - public void CanBuildUsingWixUIInstallDir() + public void CanBuildUsingWixUIInstallDirWithCustomizedEula() { var folder = TestData.Get(@"TestData", "WixUI_InstallDir"); var bindFolder = TestData.Get(@"TestData", "data"); var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent"); + var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent"); Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); WixAssert.CompareLineByLine(new[] { @@ -302,6 +303,82 @@ namespace WixToolsetTest.UI }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray()); } + [Fact] + public void CanBuildUsingWithInstallDirAndRemovedDialog() + { + var folder = TestData.Get(@"TestData", "InstallDir_NoLicense"); + var bindFolder = TestData.Get(@"TestData", "data"); + var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); + + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent"); + Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); + WixAssert.CompareLineByLine(new[] + { + "Binary:WixUI_Bmp_Banner\t[Binary data]", + "Binary:WixUI_Bmp_Dialog\t[Binary data]", + "Binary:WixUI_Bmp_New\t[Binary data]", + "Binary:WixUI_Bmp_Up\t[Binary data]", + "Binary:WixUI_Ico_Exclam\t[Binary data]", + "Binary:WixUI_Ico_Info\t[Binary data]", + "Binary:WixUiCa_X86\t[Binary data]", + }, results.Where(r => r.StartsWith("Binary:")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t", + }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER", + }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t3", + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2", + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); + + Assert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray()); + } + + [Fact] + public void CanBuildUsingWithInstallDirAndAddedDialog() + { + var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg"); + var bindFolder = TestData.Get(@"TestData", "data"); + var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); + + var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent"); + Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); + WixAssert.CompareLineByLine(new[] + { + "Binary:WixUI_Bmp_Banner\t[Binary data]", + "Binary:WixUI_Bmp_Dialog\t[Binary data]", + "Binary:WixUI_Bmp_New\t[Binary data]", + "Binary:WixUI_Bmp_Up\t[Binary data]", + "Binary:WixUI_Ico_Exclam\t[Binary data]", + "Binary:WixUI_Ico_Info\t[Binary data]", + "Binary:WixUiCa_X64\t[Binary data]", + }, results.Where(r => r.StartsWith("Binary:")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t", + "CustomAction:WixUIValidatePath_X64\t65\tWixUiCa_X64\tValidatePath\t", + }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER", + }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray()); + WixAssert.CompareLineByLine(new[] + { + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t3", + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t2", + "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1", + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); + + Assert.Equal(8, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count()); + Assert.Equal(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count()); + Assert.Single(results.Where(result => result.StartsWith("Dialog:") && result.Contains("SpecialDlg"))); + } + [Fact] public void CannotBuildWithV3LikeUIRef() { @@ -345,6 +422,12 @@ namespace WixToolsetTest.UI .AssertSuccess(); } + private static void BuildEula(string[] args) + { + var result = WixRunner.Execute(args.Concat(new[] { "-bv", "WixUILicenseRtf=bpl.rtf" }).ToArray()) + .AssertSuccess(); + } + private static void BuildInGerman(string[] args) { var localizedArgs = args.Append("-culture").Append("de-DE").ToArray(); -- cgit v1.2.3-55-g6feb