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>