aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs')
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs197
1 files changed, 126 insertions, 71 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs
index f24429f7..ffeda069 100644
--- a/src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs
@@ -8,10 +8,9 @@ namespace WixToolsetTest.CoreIntegration
8 using System.Linq; 8 using System.Linq;
9 using System.Xml; 9 using System.Xml;
10 using WixBuildTools.TestSupport; 10 using WixBuildTools.TestSupport;
11 using WixToolset.Core;
11 using WixToolset.Core.Burn; 12 using WixToolset.Core.Burn;
12 using WixToolset.Core.TestPackage; 13 using WixToolset.Core.TestPackage;
13 using WixToolset.Data;
14 using WixToolset.Data.Symbols;
15 using Xunit; 14 using Xunit;
16 15
17 public class ContainerFixture 16 public class ContainerFixture
@@ -30,33 +29,9 @@ namespace WixToolsetTest.CoreIntegration
30 var baFolderPath = Path.Combine(baseFolder, "ba"); 29 var baFolderPath = Path.Combine(baseFolder, "ba");
31 var extractFolderPath = Path.Combine(baseFolder, "extract"); 30 var extractFolderPath = Path.Combine(baseFolder, "extract");
32 31
33 var result = WixRunner.Execute(new[] 32 this.BuildMsis(folder, intermediateFolder, binFolder);
34 {
35 "build",
36 Path.Combine(folder, "MsiTransaction", "FirstX86.wxs"),
37 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
38 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
39 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
40 "-intermediateFolder", intermediateFolder,
41 "-o", Path.Combine(binFolder, "FirstX86.msi"),
42 });
43
44 result.AssertSuccess();
45 33
46 result = WixRunner.Execute(new[] 34 var result = WixRunner.Execute(new[]
47 {
48 "build",
49 Path.Combine(folder, "MsiTransaction", "FirstX64.wxs"),
50 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
51 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
52 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
53 "-intermediateFolder", intermediateFolder,
54 "-o", Path.Combine(binFolder, "FirstX64.msi"),
55 });
56
57 result.AssertSuccess();
58
59 result = WixRunner.Execute(new[]
60 { 35 {
61 "build", 36 "build",
62 Path.Combine(folder, "Container", "HarvestIntoDetachedContainer.wxs"), 37 Path.Combine(folder, "Container", "HarvestIntoDetachedContainer.wxs"),
@@ -98,33 +73,9 @@ namespace WixToolsetTest.CoreIntegration
98 var baFolderPath = Path.Combine(baseFolder, "ba"); 73 var baFolderPath = Path.Combine(baseFolder, "ba");
99 var extractFolderPath = Path.Combine(baseFolder, "extract"); 74 var extractFolderPath = Path.Combine(baseFolder, "extract");
100 75
101 var result = WixRunner.Execute(new[] 76 this.BuildMsis(folder, intermediateFolder, binFolder);
102 {
103 "build",
104 Path.Combine(folder, "MsiTransaction", "FirstX86.wxs"),
105 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
106 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
107 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
108 "-intermediateFolder", intermediateFolder,
109 "-o", Path.Combine(binFolder, "FirstX86.msi"),
110 });
111
112 result.AssertSuccess();
113
114 result = WixRunner.Execute(new[]
115 {
116 "build",
117 Path.Combine(folder, "MsiTransaction", "FirstX64.wxs"),
118 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
119 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
120 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
121 "-intermediateFolder", intermediateFolder,
122 "-o", Path.Combine(binFolder, "FirstX64.msi"),
123 });
124
125 result.AssertSuccess();
126 77
127 result = WixRunner.Execute(new[] 78 var result = WixRunner.Execute(new[]
128 { 79 {
129 "build", 80 "build",
130 Path.Combine(folder, "Container", "HarvestIntoDetachedContainer.wxs"), 81 Path.Combine(folder, "Container", "HarvestIntoDetachedContainer.wxs"),
@@ -174,7 +125,7 @@ namespace WixToolsetTest.CoreIntegration
174 } 125 }
175 126
176 [Fact] 127 [Fact]
177 public void MultipleAttachedContainersAreNotCurrentlySupported() 128 public void LayoutPayloadIsPutInContainer()
178 { 129 {
179 var folder = TestData.Get(@"TestData"); 130 var folder = TestData.Get(@"TestData");
180 131
@@ -187,36 +138,92 @@ namespace WixToolsetTest.CoreIntegration
187 var baFolderPath = Path.Combine(baseFolder, "ba"); 138 var baFolderPath = Path.Combine(baseFolder, "ba");
188 var extractFolderPath = Path.Combine(baseFolder, "extract"); 139 var extractFolderPath = Path.Combine(baseFolder, "extract");
189 140
190 var result = WixRunner.Execute(new[] 141 this.BuildMsis(folder, intermediateFolder, binFolder);
142
143 var result = WixRunner.Execute(false, new[]
191 { 144 {
192 "build", 145 "build",
193 Path.Combine(folder, "MsiTransaction", "FirstX86.wxs"), 146 Path.Combine(folder, "Container", "LayoutPayloadInContainer.wxs"),
194 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), 147 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
195 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), 148 "-bindpath", binFolder,
196 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
197 "-intermediateFolder", intermediateFolder, 149 "-intermediateFolder", intermediateFolder,
198 "-o", Path.Combine(binFolder, "FirstX86.msi"), 150 "-o", bundlePath
199 }); 151 });
200 152
153 WixAssert.CompareLineByLine(new string[]
154 {
155 "The layout-only Payload 'SharedPayload' is being added to Container 'FirstX64'. It will not be extracted during layout.",
156 }, result.Messages.Select(m => m.ToString()).ToArray());
201 result.AssertSuccess(); 157 result.AssertSuccess();
202 158
203 result = WixRunner.Execute(new[] 159 Assert.True(File.Exists(bundlePath));
160
161 var extractResult = BundleExtractor.ExtractBAContainer(null, bundlePath, baFolderPath, extractFolderPath);
162 extractResult.AssertSuccess();
163
164 var ignoreAttributes = new Dictionary<string, List<string>> { { "Payload", new List<string> { "FileSize", "Hash" } } };
165 var payloads = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Payload[@Id='SharedPayload']")
166 .Cast<XmlElement>()
167 .Select(e => e.GetTestXml(ignoreAttributes))
168 .ToArray();
169 WixAssert.CompareLineByLine(new string[]
170 {
171 "<Payload Id='SharedPayload' FilePath='LayoutPayloadInContainer.wxs' FileSize='*' Hash='*' LayoutOnly='yes' Packaging='embedded' SourcePath='a1' Container='FirstX64' />",
172 }, payloads);
173 }
174 }
175
176 [Fact]
177 public void MultipleAttachedContainersAreNotCurrentlySupported()
178 {
179 var folder = TestData.Get(@"TestData");
180
181 using (var fs = new DisposableFileSystem())
182 {
183 var baseFolder = fs.GetFolder();
184 var intermediateFolder = Path.Combine(baseFolder, "obj");
185 var binFolder = Path.Combine(baseFolder, "bin");
186 var bundlePath = Path.Combine(binFolder, "test.exe");
187 var baFolderPath = Path.Combine(baseFolder, "ba");
188 var extractFolderPath = Path.Combine(baseFolder, "extract");
189
190 this.BuildMsis(folder, intermediateFolder, binFolder);
191
192 var result = WixRunner.Execute(new[]
204 { 193 {
205 "build", 194 "build",
206 Path.Combine(folder, "MsiTransaction", "FirstX64.wxs"), 195 Path.Combine(folder, "Container", "MultipleAttachedContainers.wxs"),
207 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), 196 Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"),
208 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), 197 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
209 "-bindpath", Path.Combine(folder, "SingleFile", "data"), 198 "-bindpath", binFolder,
210 "-intermediateFolder", intermediateFolder, 199 "-intermediateFolder", intermediateFolder,
211 "-o", Path.Combine(binFolder, "FirstX64.msi"), 200 "-o", bundlePath
212 }); 201 });
213 202
214 result.AssertSuccess(); 203 Assert.Equal((int)BurnBackendErrors.Ids.MultipleAttachedContainersUnsupported, result.ExitCode);
204 }
205 }
206
207 [Fact]
208 public void PayloadIsNotPutInMultipleContainers()
209 {
210 var folder = TestData.Get(@"TestData");
211
212 using (var fs = new DisposableFileSystem())
213 {
214 var baseFolder = fs.GetFolder();
215 var intermediateFolder = Path.Combine(baseFolder, "obj");
216 var binFolder = Path.Combine(baseFolder, "bin");
217 var bundlePath = Path.Combine(binFolder, "test.exe");
218 var baFolderPath = Path.Combine(baseFolder, "ba");
219 var extractFolderPath = Path.Combine(baseFolder, "extract");
220
221 this.BuildMsis(folder, intermediateFolder, binFolder);
215 222
216 result = WixRunner.Execute(new[] 223 var result = WixRunner.Execute(false, new[]
217 { 224 {
218 "build", 225 "build",
219 Path.Combine(folder, "Container", "MultipleAttachedContainers.wxs"), 226 Path.Combine(folder, "Container", "PayloadInMultipleContainers.wxs"),
220 Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), 227 Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"),
221 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), 228 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
222 "-bindpath", binFolder, 229 "-bindpath", binFolder,
@@ -224,8 +231,56 @@ namespace WixToolsetTest.CoreIntegration
224 "-o", bundlePath 231 "-o", bundlePath
225 }); 232 });
226 233
227 Assert.Equal((int)BurnBackendErrors.Ids.MultipleAttachedContainersUnsupported, result.ExitCode); 234 WixAssert.CompareLineByLine(new string[]
235 {
236 "The Payload 'SharedPayload' can't be added to Container 'FirstX64' because it was already added to Container 'FirstX86'.",
237 }, result.Messages.Select(m => m.ToString()).ToArray());
238 result.AssertSuccess();
239
240 Assert.True(File.Exists(bundlePath));
241
242 var extractResult = BundleExtractor.ExtractBAContainer(null, bundlePath, baFolderPath, extractFolderPath);
243 extractResult.AssertSuccess();
244
245 var ignoreAttributes = new Dictionary<string, List<string>> { { "Payload", new List<string> { "FileSize", "Hash" } } };
246 var payloads = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Payload[@Id='SharedPayload']")
247 .Cast<XmlElement>()
248 .Select(e => e.GetTestXml(ignoreAttributes))
249 .ToArray();
250 WixAssert.CompareLineByLine(new string[]
251 {
252 "<Payload Id='SharedPayload' FilePath='PayloadInMultipleContainers.wxs' FileSize='*' Hash='*' Packaging='embedded' SourcePath='a2' Container='FirstX86' />",
253 }, payloads);
228 } 254 }
229 } 255 }
256
257 private void BuildMsis(string folder, string intermediateFolder, string binFolder)
258 {
259 var result = WixRunner.Execute(new[]
260 {
261 "build",
262 Path.Combine(folder, "MsiTransaction", "FirstX86.wxs"),
263 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
264 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
265 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
266 "-intermediateFolder", intermediateFolder,
267 "-o", Path.Combine(binFolder, "FirstX86.msi"),
268 });
269
270 result.AssertSuccess();
271
272 result = WixRunner.Execute(new[]
273 {
274 "build",
275 Path.Combine(folder, "MsiTransaction", "FirstX64.wxs"),
276 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
277 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
278 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
279 "-intermediateFolder", intermediateFolder,
280 "-o", Path.Combine(binFolder, "FirstX64.msi"),
281 });
282
283 result.AssertSuccess();
284 }
230 } 285 }
231} 286}