aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs')
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs212
1 files changed, 0 insertions, 212 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
deleted file mode 100644
index 23f6a9ba..00000000
--- a/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
+++ /dev/null
@@ -1,212 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.CoreIntegration
4{
5 using System;
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;
12 using WixToolset.Core.TestPackage;
13 using WixToolset.Data;
14 using WixToolset.Data.Symbols;
15 using Xunit;
16
17 public class PayloadFixture
18 {
19 [Fact]
20 public void CanParseValidName()
21 {
22 var folder = TestData.Get(@"TestData\Payload");
23
24 using (var fs = new DisposableFileSystem())
25 {
26 var baseFolder = fs.GetFolder();
27 var intermediateFolder = Path.Combine(baseFolder, "obj");
28 var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
29
30 var result = WixRunner.Execute(new[]
31 {
32 "build",
33 Path.Combine(folder, "ValidName.wxs"),
34 "-intermediateFolder", intermediateFolder,
35 "-o", wixlibPath,
36 });
37
38 result.AssertSuccess();
39
40 Assert.Empty(result.Messages);
41
42 var intermediate = Intermediate.Load(wixlibPath);
43 var allSymbols = intermediate.Sections.SelectMany(s => s.Symbols);
44 var payloadSymbol = allSymbols.OfType<WixBundlePayloadSymbol>()
45 .SingleOrDefault();
46 Assert.NotNull(payloadSymbol);
47
48 var fields = payloadSymbol.Fields.Select(field => field?.Type == IntermediateFieldType.Bool
49 ? field.AsNullableNumber()?.ToString()
50 : field?.AsString())
51 .ToList();
52 Assert.Equal(@"dir\file.ext", fields[(int)WixBundlePayloadSymbolFields.Name]);
53 }
54 }
55
56 [Fact]
57 public void CanCanonicalizeName()
58 {
59 var folder = TestData.Get(@"TestData\Payload");
60
61 using (var fs = new DisposableFileSystem())
62 {
63 var baseFolder = fs.GetFolder();
64 var intermediateFolder = Path.Combine(baseFolder, "obj");
65 var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
66
67 var result = WixRunner.Execute(warningsAsErrors: false, new[]
68 {
69 "build",
70 Path.Combine(folder, "CanonicalizeName.wxs"),
71 "-intermediateFolder", intermediateFolder,
72 "-o", wixlibPath,
73 });
74
75 result.AssertSuccess();
76
77 Assert.Single(result.Messages, m => m.Id == (int)WarningMessages.Ids.PathCanonicalized);
78
79 var intermediate = Intermediate.Load(wixlibPath);
80 var allSymbols = intermediate.Sections.SelectMany(s => s.Symbols);
81 var payloadSymbol = allSymbols.OfType<WixBundlePayloadSymbol>()
82 .SingleOrDefault();
83 Assert.NotNull(payloadSymbol);
84
85 var fields = payloadSymbol.Fields.Select(field => field?.Type == IntermediateFieldType.Bool
86 ? field.AsNullableNumber()?.ToString()
87 : field?.AsString())
88 .ToList();
89 Assert.Equal(@"c\d.exe", fields[(int)WixBundlePayloadSymbolFields.Name]);
90 }
91 }
92
93 [Fact]
94 public void RejectsAbsoluteName()
95 {
96 var folder = TestData.Get(@"TestData\Payload");
97
98 using (var fs = new DisposableFileSystem())
99 {
100 var baseFolder = fs.GetFolder();
101 var intermediateFolder = Path.Combine(baseFolder, "obj");
102 var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
103
104 var result = WixRunner.Execute(new[]
105 {
106 "build",
107 Path.Combine(folder, "AbsoluteName.wxs"),
108 "-intermediateFolder", intermediateFolder,
109 "-o", wixlibPath,
110 });
111
112 Assert.InRange(result.ExitCode, 2, int.MaxValue);
113
114 var expectedIllegalRelativeLongFileName = 1;
115 var expectedPayloadMustBeRelativeToCache = 2;
116 Assert.Equal(expectedIllegalRelativeLongFileName, result.Messages.Where(m => m.Id == (int)ErrorMessages.Ids.IllegalRelativeLongFilename).Count());
117 Assert.Equal(expectedPayloadMustBeRelativeToCache, result.Messages.Where(m => m.Id == (int)ErrorMessages.Ids.PayloadMustBeRelativeToCache).Count());
118 }
119 }
120
121 [Fact]
122 public void RejectsPayloadSharedBetweenPackageAndBA()
123 {
124 var folder = TestData.Get(@"TestData");
125
126 using (var fs = new DisposableFileSystem())
127 {
128 var baseFolder = fs.GetFolder();
129 var intermediateFolder = Path.Combine(baseFolder, "obj");
130 var bundlePath = Path.Combine(baseFolder, @"bin\test.exe");
131
132 var result = WixRunner.Execute(new[]
133 {
134 "build",
135 Path.Combine(folder, "Payload", "SharedBAAndPackagePayloadBundle.wxs"),
136 Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"),
137 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
138 "-bindpath", Path.Combine(folder, ".Data"),
139 "-intermediateFolder", intermediateFolder,
140 "-o", bundlePath,
141 });
142
143 Assert.Equal((int)LinkerErrors.Ids.PayloadSharedWithBA, result.ExitCode);
144 }
145 }
146
147 [Fact]
148 public void ReplacesDownloadUrlPlaceholders()
149 {
150 var folder = TestData.Get(@"TestData");
151
152 using (var fs = new DisposableFileSystem())
153 {
154 var baseFolder = fs.GetFolder();
155 var intermediateFolder = Path.Combine(baseFolder, "obj");
156 var bundlePath = Path.Combine(baseFolder, @"bin\test.exe");
157 var baFolderPath = Path.Combine(baseFolder, "ba");
158 var extractFolderPath = Path.Combine(baseFolder, "extract");
159
160 var result = WixRunner.Execute(false, new[]
161 {
162 "build",
163 Path.Combine(folder, "Payload", "DownloadUrlPlaceholdersBundle.wxs"),
164 Path.Combine(folder, "SimpleBundle", "MultiFileBootstrapperApplication.wxs"),
165 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
166 "-bindpath", Path.Combine(folder, ".Data"),
167 "-intermediateFolder", intermediateFolder,
168 "-o", bundlePath,
169 });
170
171 result.AssertSuccess();
172
173 WixAssert.CompareLineByLine(new string[]
174 {
175 "The Payload 'burn.exe' is being added to Container 'PackagesContainer', overriding its Compressed value of 'no'.",
176 }, result.Messages.Select(m => m.ToString()).ToArray());
177
178 Assert.True(File.Exists(bundlePath));
179
180 var extractResult = BundleExtractor.ExtractBAContainer(null, bundlePath, baFolderPath, extractFolderPath);
181 extractResult.AssertSuccess();
182
183 var ignoreAttributesByElementName = new Dictionary<string, List<string>>
184 {
185 { "Container", new List<string> { "FileSize", "Hash" } },
186 { "Payload", new List<string> { "FileSize", "Hash" } },
187 };
188 var payloads = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Payload")
189 .Cast<XmlElement>()
190 .Select(e => e.GetTestXml(ignoreAttributesByElementName))
191 .ToArray();
192 WixAssert.CompareLineByLine(new string[]
193 {
194 "<Payload Id='burn.exe' FilePath='burn.exe' FileSize='*' Hash='*' Packaging='embedded' SourcePath='a0' Container='PackagesContainer' />",
195 "<Payload Id='test.msi' FilePath='test.msi' FileSize='*' Hash='*' DownloadUrl='http://example.com/id/test.msi/test.msi' Packaging='external' SourcePath='test.msi' />",
196 "<Payload Id='LayoutOnlyPayload' FilePath='DownloadUrlPlaceholdersBundle.wxs' FileSize='*' Hash='*' LayoutOnly='yes' DownloadUrl='http://example.com/id/LayoutOnlyPayload/DownloadUrlPlaceholdersBundle.wxs' Packaging='external' SourcePath='DownloadUrlPlaceholdersBundle.wxs' />",
197 @"<Payload Id='fhuZsOcBDTuIX8rF96kswqI6SnuI' FilePath='MsiPackage\test.txt' FileSize='*' Hash='*' Packaging='external' SourcePath='MsiPackage\test.txt' />",
198 @"<Payload Id='faf_OZ741BG7SJ6ZkcIvivZ2Yzo8' FilePath='MsiPackage\Shared.dll' FileSize='*' Hash='*' Packaging='external' SourcePath='MsiPackage\Shared.dll' />",
199 }, payloads);
200
201 var containers = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Container")
202 .Cast<XmlElement>()
203 .Select(e => e.GetTestXml(ignoreAttributesByElementName))
204 .ToArray();
205 WixAssert.CompareLineByLine(new string[]
206 {
207 "<Container Id='PackagesContainer' FileSize='*' Hash='*' DownloadUrl='http://example.com/id/PackagesContainer/packages.cab' FilePath='packages.cab' />",
208 }, containers);
209 }
210 }
211 }
212}