From da8727b126a3dc358c9d265c6e183b151ed8ec44 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Wed, 23 Oct 2019 21:25:57 -0400 Subject: Use strongly-typed tuple creation... ...especially for tuples shared with WixToolset.Data. Add bundle tests. --- .../WixToolsetTest.Util/TestData/.Data/burn.exe | Bin 0 -> 463360 bytes .../TestData/BundleWithSearches/Bundle.en-us.wxl | 10 +++ .../TestData/BundleWithSearches/Bundle.wxs | 35 +++++++++++ .../BundleWithSearches/data/MsiPackage/Shared.dll | 1 + .../BundleWithSearches/data/MsiPackage/test.txt | 1 + .../TestData/BundleWithSearches/data/fakeba.dll | 1 + .../TestData/BundleWithSearches/data/test.msi | Bin 0 -> 32768 bytes .../WixToolsetTest.Util/UtilExtensionFixture.cs | 67 +++++++++++++++++++++ .../WixToolsetTest.Util/WixToolsetTest.Util.csproj | 7 +++ 9 files changed, 122 insertions(+) create mode 100644 src/test/WixToolsetTest.Util/TestData/.Data/burn.exe create mode 100644 src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.en-us.wxl create mode 100644 src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.wxs create mode 100644 src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/Shared.dll create mode 100644 src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/test.txt create mode 100644 src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/fakeba.dll create mode 100644 src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/test.msi (limited to 'src/test') diff --git a/src/test/WixToolsetTest.Util/TestData/.Data/burn.exe b/src/test/WixToolsetTest.Util/TestData/.Data/burn.exe new file mode 100644 index 00000000..2a4f423f Binary files /dev/null and b/src/test/WixToolsetTest.Util/TestData/.Data/burn.exe differ diff --git a/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.en-us.wxl b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.en-us.wxl new file mode 100644 index 00000000..bc1dee83 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.en-us.wxl @@ -0,0 +1,10 @@ + + + + + + ~TestBundle + + diff --git a/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.wxs b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.wxs new file mode 100644 index 00000000..cafd4255 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/Bundle.wxs @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/Shared.dll b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/Shared.dll new file mode 100644 index 00000000..0e461ba8 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/Shared.dll @@ -0,0 +1 @@ +This is Shared.dll. \ No newline at end of file diff --git a/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/test.txt b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/test.txt new file mode 100644 index 00000000..8b986220 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/MsiPackage/test.txt @@ -0,0 +1 @@ +This is test.txt \ No newline at end of file diff --git a/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/fakeba.dll b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/fakeba.dll new file mode 100644 index 00000000..970efdf0 --- /dev/null +++ b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/fakeba.dll @@ -0,0 +1 @@ +This is a fakeba.dll \ No newline at end of file diff --git a/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/test.msi b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/test.msi new file mode 100644 index 00000000..0722d60e Binary files /dev/null and b/src/test/WixToolsetTest.Util/TestData/BundleWithSearches/data/test.msi differ diff --git a/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs b/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs index 74cf9769..f2f06af8 100644 --- a/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs +++ b/src/test/WixToolsetTest.Util/UtilExtensionFixture.cs @@ -2,9 +2,12 @@ namespace WixToolsetTest.Util { + using System.IO; using System.Linq; using WixBuildTools.TestSupport; using WixToolset.Core.TestPackage; + using WixToolset.Data; + using WixToolset.Data.Tuples; using WixToolset.Util; using Xunit; @@ -24,6 +27,70 @@ namespace WixToolsetTest.Util }, results.OrderBy(s => s).ToArray()); } + [Fact] + public void CanBuildBundleWithSearches() + { + var burnStubPath = TestData.Get(@"TestData\.Data\burn.exe"); + var folder = TestData.Get(@"TestData\BundleWithSearches"); + var rootFolder = TestData.Get(); + var wixext = Path.Combine(rootFolder, "WixToolset.Util.wixext.dll"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Bundle.wxs"), + "-ext", wixext, + "-loc", Path.Combine(folder, "Bundle.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-burnStub", burnStubPath, + "-o", Path.Combine(baseFolder, @"bin\test.exe") + }); + + result.AssertSuccess(); + + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.exe"))); +#if TODO + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); +#endif + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wir")); + var section = intermediate.Sections.Single(); + + var searchTuples = section.Tuples.OfType().OrderBy(t => t.Id.Id).ToList(); + Assert.Equal(3, searchTuples.Count); + Assert.Equal("FileSearchId", searchTuples[0].Id.Id); + Assert.Equal("FileSearchVariable", searchTuples[0].Variable); + Assert.Equal("ProductSearchId", searchTuples[1].Id.Id); + Assert.Equal("ProductSearchVariable", searchTuples[1].Variable); + Assert.Equal("1 & 2 < 3", searchTuples[1].Condition); + Assert.Equal("RegistrySearchId", searchTuples[2].Id.Id); + Assert.Equal("RegistrySearchVariable", searchTuples[2].Variable); + + var fileSearchTuple = section.Tuples.OfType().Single(); + Assert.Equal("FileSearchId", fileSearchTuple.Id.Id); + Assert.Equal(@"%windir%\System32\mscoree.dll", fileSearchTuple.Path); + Assert.Equal(WixFileSearchAttributes.Default | WixFileSearchAttributes.WantExists, fileSearchTuple.Attributes); + + var productSearchTuple = section.Tuples.OfType().Single(); + Assert.Equal("ProductSearchId", productSearchTuple.Id.Id); + Assert.Equal("{738D02BF-E231-4370-8209-E9FD4E1BE2A1}", productSearchTuple.Guid); + Assert.Equal(WixProductSearchAttributes.Version | WixProductSearchAttributes.UpgradeCode, productSearchTuple.Attributes); + + var registrySearchTuple = section.Tuples.OfType().Single(); + Assert.Equal("RegistrySearchId", registrySearchTuple.Id.Id); + Assert.Equal(RegistryRootType.LocalMachine, registrySearchTuple.Root); + Assert.Equal(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full", registrySearchTuple.Key); + Assert.Equal("Release", registrySearchTuple.Value); + Assert.Equal(WixRegistrySearchAttributes.WantValue | WixRegistrySearchAttributes.Raw, registrySearchTuple.Attributes); + } + } + private static void Build(string[] args) { var result = WixRunner.Execute(args) diff --git a/src/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj b/src/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj index 294844ac..6cf001a2 100644 --- a/src/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj +++ b/src/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj @@ -12,6 +12,13 @@ + + + + + + + -- cgit v1.2.3-55-g6feb