@joebigelow / wix / commits / 87ffd980

Add failing test for DownloadUrl placeholder replacement.

Sean Hall committed Mar 30, 2021 at 21:51 UTC 87ffd980dc518a7ab40901eeae27b75259ea32b0
2 files changed +91
src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
+61
@@ -6,6 +6,7 @@ namespace WixToolsetTest.CoreIntegration
6 using System.Collections.Generic;
7 using System.IO;
8 using System.Linq;
9 + using System.Xml;
10 using WixBuildTools.TestSupport;
11 using WixToolset.Core.TestPackage;
12 using WixToolset.Data;
@@ -141,5 +142,65 @@ namespace WixToolsetTest.CoreIntegration
142 Assert.InRange(result.ExitCode, 2, int.MaxValue);
143 }
144 }
145 +
146 + [Fact(Skip = "Test demonstrates failure")]
147 + public void ReplacesDownloadUrlPlaceholders()
148 + {
149 + var folder = TestData.Get(@"TestData");
150 +
151 + using (var fs = new DisposableFileSystem())
152 + {
153 + var baseFolder = fs.GetFolder();
154 + var intermediateFolder = Path.Combine(baseFolder, "obj");
155 + var bundlePath = Path.Combine(baseFolder, @"bin\test.exe");
156 + var baFolderPath = Path.Combine(baseFolder, "ba");
157 + var extractFolderPath = Path.Combine(baseFolder, "extract");
158 +
159 + var result = WixRunner.Execute(new[]
160 + {
161 + "build",
162 + Path.Combine(folder, "Payload", "DownloadUrlPlaceholdersBundle.wxs"),
163 + Path.Combine(folder, "SimpleBundle", "MultiFileBootstrapperApplication.wxs"),
164 + "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
165 + "-bindpath", Path.Combine(folder, ".Data"),
166 + "-intermediateFolder", intermediateFolder,
167 + "-o", bundlePath,
168 + });
169 +
170 + result.AssertSuccess();
171 +
172 + Assert.True(File.Exists(bundlePath));
173 +
174 + var extractResult = BundleExtractor.ExtractBAContainer(null, bundlePath, baFolderPath, extractFolderPath);
175 + extractResult.AssertSuccess();
176 +
177 + var ignoreAttributesByElementName = new Dictionary<string, List<string>>
178 + {
179 + { "Container", new List<string> { "FileSize", "Hash" } },
180 + { "Payload", new List<string> { "FileSize", "Hash" } },
181 + };
182 + var payloads = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Payload")
183 + .Cast<XmlElement>()
184 + .Select(e => e.GetTestXml(ignoreAttributesByElementName))
185 + .ToArray();
186 + WixAssert.CompareLineByLine(new string[]
187 + {
188 + "<Payload Id='burn.exe' FilePath='burn.exe' FileSize='*' Hash='*' Packaging='embedded' SourcePath='a0' Container='PackagesContainer' />",
189 + "<Payload Id='test.msi' FilePath='test.msi' FileSize='*' Hash='*' DownloadUrl='http://example.com/id/test.msi/test.msi' Packaging='external' SourcePath='test.msi' />",
190 + "<Payload Id='LayoutOnlyPayload' FilePath='DownloadUrlPlaceholdersBundle.wxs' FileSize='*' Hash='*' LayoutOnly='yes' DownloadUrl='http://example.com/id/LayoutOnlyPayload/DownloadUrlPlaceholdersBundle.wxs' Packaging='external' SourcePath='DownloadUrlPlaceholdersBundle.wxs' />",
191 + @"<Payload Id='fhuZsOcBDTuIX8rF96kswqI6SnuI' FilePath='MsiPackage\test.txt' FileSize='*' Hash='*' Packaging='external' SourcePath='MsiPackage\test.txt' />",
192 + @"<Payload Id='faf_OZ741BG7SJ6ZkcIvivZ2Yzo8' FilePath='MsiPackage\Shared.dll' FileSize='*' Hash='*' Packaging='external' SourcePath='MsiPackage\Shared.dll' />",
193 + }, payloads);
194 +
195 + var containers = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Container")
196 + .Cast<XmlElement>()
197 + .Select(e => e.GetTestXml(ignoreAttributesByElementName))
198 + .ToArray();
199 + WixAssert.CompareLineByLine(new string[]
200 + {
201 + "<Container Id='PackagesContainer' FileSize='*' Hash='*' DownloadUrl='http://example.com/id/PackagesContainer/packages.cab' FilePath='packages.cab' />",
202 + }, containers);
203 + }
204 + }
205 }
206 }
src/test/WixToolsetTest.CoreIntegration/TestData/Payload/DownloadUrlPlaceholdersBundle.wxs new
+30
@@ -0,0 +1,30 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Bundle Name="DownloadUrlPlaceholders" Version="1.0.0.0" Manufacturer="test" UpgradeCode="{B04C20B8-70C3-4DE1-8D91-4F11C7C68DED}">
3 + <BootstrapperApplicationRef Id="fakeba" />
4 +
5 + <Chain>
6 + <PackageGroupRef Id="ContainerPackages" />
7 + <PackageGroupRef Id="UncompressedPackages" />
8 + </Chain>
9 +
10 + <PayloadGroupRef Id="LayoutOnlyPayloads" />
11 + <Container Id="PackagesContainer" Name="packages.cab" DownloadUrl="http://example.com/{0}id/{1}/{2}">
12 + <PackageGroupRef Id="ContainerPackages" />
13 + </Container>
14 + </Bundle>
15 + <Fragment>
16 + <PackageGroup Id="ContainerPackages">
17 + <ExePackage SourceFile="burn.exe" DetectCondition="none" />
18 + </PackageGroup>
19 + </Fragment>
20 + <Fragment>
21 + <PackageGroup Id="UncompressedPackages">
22 + <MsiPackage SourceFile="test.msi" DownloadUrl="http://example.com/{0}id/{1}/{2}" Compressed="no" />
23 + </PackageGroup>
24 + </Fragment>
25 + <Fragment>
26 + <PayloadGroup Id="LayoutOnlyPayloads">
27 + <Payload Id="LayoutOnlyPayload" SourceFile="$(sys.SOURCEFILEPATH)" DownloadUrl="http://example.com/{0}id/{1}/{2}" Compressed="no" />
28 + </PayloadGroup>
29 + </Fragment>
30 +</Wix>