diff options
author | Rob Mensching <rob@firegiant.com> | 2018-07-19 00:58:00 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2018-07-21 07:36:59 -0700 |
commit | 2724cfee4c163f3297ee25edfd2372767cfd4945 (patch) | |
tree | 8cdda34c83bea014a586a491e3b4b187ad8f16da /src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs | |
parent | 4d40bef9cf51b8cff7e1f6a73fdf68b9722eb8a0 (diff) | |
download | wix-2724cfee4c163f3297ee25edfd2372767cfd4945.tar.gz wix-2724cfee4c163f3297ee25edfd2372767cfd4945.tar.bz2 wix-2724cfee4c163f3297ee25edfd2372767cfd4945.zip |
Move tool projects to Tools repo
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs')
-rw-r--r-- | src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs | 442 |
1 files changed, 442 insertions, 0 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs new file mode 100644 index 00000000..7a10f71e --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs | |||
@@ -0,0 +1,442 @@ | |||
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 | |||
3 | namespace WixToolsetTest.CoreIntegration | ||
4 | { | ||
5 | using System.IO; | ||
6 | using System.Linq; | ||
7 | using WixBuildTools.TestSupport; | ||
8 | using WixToolset.Core.TestPackage; | ||
9 | using WixToolset.Data; | ||
10 | using WixToolset.Data.Tuples; | ||
11 | using WixToolset.Data.WindowsInstaller; | ||
12 | using Xunit; | ||
13 | |||
14 | public class MsiFixture | ||
15 | { | ||
16 | [Fact] | ||
17 | public void CanBuildSingleFile() | ||
18 | { | ||
19 | var folder = TestData.Get(@"TestData\SingleFile"); | ||
20 | |||
21 | using (var fs = new DisposableFileSystem()) | ||
22 | { | ||
23 | var baseFolder = fs.GetFolder(); | ||
24 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
25 | |||
26 | var result = WixRunner.Execute(new[] | ||
27 | { | ||
28 | "build", | ||
29 | Path.Combine(folder, "Package.wxs"), | ||
30 | Path.Combine(folder, "PackageComponents.wxs"), | ||
31 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
32 | "-bindpath", Path.Combine(folder, "data"), | ||
33 | "-intermediateFolder", intermediateFolder, | ||
34 | "-o", Path.Combine(baseFolder, @"bin\test.msi") | ||
35 | }, out var messages); | ||
36 | Assert.Equal(0, result); | ||
37 | |||
38 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); | ||
39 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); | ||
40 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); | ||
41 | |||
42 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); | ||
43 | var section = intermediate.Sections.Single(); | ||
44 | |||
45 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | ||
46 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | ||
47 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | [Fact] | ||
52 | public void CanBuildSingleFileCompressed() | ||
53 | { | ||
54 | var folder = TestData.Get(@"TestData\SingleFileCompressed"); | ||
55 | |||
56 | using (var fs = new DisposableFileSystem()) | ||
57 | { | ||
58 | var intermediateFolder = fs.GetFolder(); | ||
59 | |||
60 | var result = WixRunner.Execute(new[] | ||
61 | { | ||
62 | "build", | ||
63 | Path.Combine(folder, "Package.wxs"), | ||
64 | Path.Combine(folder, "PackageComponents.wxs"), | ||
65 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
66 | "-bindpath", Path.Combine(folder, "data"), | ||
67 | "-intermediateFolder", intermediateFolder, | ||
68 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
69 | }, out var messages); | ||
70 | |||
71 | Assert.Equal(0, result); | ||
72 | |||
73 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); | ||
74 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab"))); | ||
75 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
76 | |||
77 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); | ||
78 | var section = intermediate.Sections.Single(); | ||
79 | |||
80 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | ||
81 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | ||
82 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | ||
83 | } | ||
84 | } | ||
85 | |||
86 | [Fact] | ||
87 | public void CanBuildSingleFileCompressedWithMediaTemplate() | ||
88 | { | ||
89 | var folder = TestData.Get(@"TestData\SingleFileCompressed"); | ||
90 | |||
91 | using (var fs = new DisposableFileSystem()) | ||
92 | { | ||
93 | var intermediateFolder = fs.GetFolder(); | ||
94 | |||
95 | var result = WixRunner.Execute(new[] | ||
96 | { | ||
97 | "build", | ||
98 | Path.Combine(folder, "Package.wxs"), | ||
99 | Path.Combine(folder, "PackageComponents.wxs"), | ||
100 | "-d", "MediaTemplateCompressionLevel", | ||
101 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
102 | "-bindpath", Path.Combine(folder, "data"), | ||
103 | "-intermediateFolder", intermediateFolder, | ||
104 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
105 | }, out var messages); | ||
106 | |||
107 | Assert.Equal(0, result); | ||
108 | |||
109 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); | ||
110 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); | ||
111 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
112 | } | ||
113 | } | ||
114 | |||
115 | [Fact] | ||
116 | public void CanBuildSingleFileCompressedWithMediaTemplateWithLowCompression() | ||
117 | { | ||
118 | var folder = TestData.Get(@"TestData\SingleFileCompressed"); | ||
119 | |||
120 | using (var fs = new DisposableFileSystem()) | ||
121 | { | ||
122 | var intermediateFolder = fs.GetFolder(); | ||
123 | |||
124 | var result = WixRunner.Execute(new[] | ||
125 | { | ||
126 | "build", | ||
127 | Path.Combine(folder, "Package.wxs"), | ||
128 | Path.Combine(folder, "PackageComponents.wxs"), | ||
129 | "-d", "MediaTemplateCompressionLevel=low", | ||
130 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
131 | "-bindpath", Path.Combine(folder, "data"), | ||
132 | "-intermediateFolder", intermediateFolder, | ||
133 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
134 | }, out var messages); | ||
135 | |||
136 | Assert.Equal(0, result); | ||
137 | |||
138 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); | ||
139 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\lowcab1.cab"))); | ||
140 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
141 | } | ||
142 | } | ||
143 | |||
144 | [Fact] | ||
145 | public void CanBuildMultipleFilesCompressed() | ||
146 | { | ||
147 | var folder = TestData.Get(@"TestData\MultiFileCompressed"); | ||
148 | |||
149 | using (var fs = new DisposableFileSystem()) | ||
150 | { | ||
151 | var intermediateFolder = fs.GetFolder(); | ||
152 | |||
153 | var result = WixRunner.Execute(new[] | ||
154 | { | ||
155 | "build", | ||
156 | Path.Combine(folder, "Package.wxs"), | ||
157 | Path.Combine(folder, "PackageComponents.wxs"), | ||
158 | "-d", "MediaTemplateCompressionLevel", | ||
159 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
160 | "-bindpath", Path.Combine(folder, "data"), | ||
161 | "-intermediateFolder", intermediateFolder, | ||
162 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
163 | }, out var messages); | ||
164 | |||
165 | Assert.Equal(0, result); | ||
166 | |||
167 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); | ||
168 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); | ||
169 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
170 | } | ||
171 | } | ||
172 | |||
173 | [Fact] | ||
174 | public void CanLoadPdbGeneratedByBuild() | ||
175 | { | ||
176 | var folder = TestData.Get(@"TestData\MultiFileCompressed"); | ||
177 | |||
178 | using (var fs = new DisposableFileSystem()) | ||
179 | { | ||
180 | var intermediateFolder = fs.GetFolder(); | ||
181 | |||
182 | var result = WixRunner.Execute(new[] | ||
183 | { | ||
184 | "build", | ||
185 | Path.Combine(folder, "Package.wxs"), | ||
186 | Path.Combine(folder, "PackageComponents.wxs"), | ||
187 | "-d", "MediaTemplateCompressionLevel", | ||
188 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
189 | "-bindpath", Path.Combine(folder, "data"), | ||
190 | "-intermediateFolder", intermediateFolder, | ||
191 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
192 | }, out var messages); | ||
193 | |||
194 | Assert.Equal(0, result); | ||
195 | |||
196 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); | ||
197 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); | ||
198 | |||
199 | var pdbPath = Path.Combine(intermediateFolder, @"bin\test.wixpdb"); | ||
200 | Assert.True(File.Exists(pdbPath)); | ||
201 | |||
202 | var pdb = Pdb.Load(pdbPath, suppressVersionCheck: true); | ||
203 | Assert.NotNull(pdb); | ||
204 | Assert.NotNull(pdb.Output); | ||
205 | } | ||
206 | } | ||
207 | |||
208 | [Fact] | ||
209 | public void CanBuildSimpleModule() | ||
210 | { | ||
211 | var folder = TestData.Get(@"TestData\SimpleModule"); | ||
212 | |||
213 | using (var fs = new DisposableFileSystem()) | ||
214 | { | ||
215 | var intermediateFolder = fs.GetFolder(); | ||
216 | |||
217 | var result = WixRunner.Execute(new[] | ||
218 | { | ||
219 | "build", | ||
220 | Path.Combine(folder, "Module.wxs"), | ||
221 | "-loc", Path.Combine(folder, "Module.en-us.wxl"), | ||
222 | "-bindpath", Path.Combine(folder, "data"), | ||
223 | "-intermediateFolder", intermediateFolder, | ||
224 | "-o", Path.Combine(intermediateFolder, @"bin\test.msm") | ||
225 | }, out var messages); | ||
226 | |||
227 | Assert.Equal(0, result); | ||
228 | |||
229 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msm"))); | ||
230 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
231 | |||
232 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); | ||
233 | var section = intermediate.Sections.Single(); | ||
234 | |||
235 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | ||
236 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | ||
237 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | ||
238 | } | ||
239 | } | ||
240 | |||
241 | [Fact] | ||
242 | public void CanBuildManualUpgrade() | ||
243 | { | ||
244 | var folder = TestData.Get(@"TestData\ManualUpgrade"); | ||
245 | |||
246 | using (var fs = new DisposableFileSystem()) | ||
247 | { | ||
248 | var intermediateFolder = fs.GetFolder(); | ||
249 | |||
250 | var result = WixRunner.Execute(new[] | ||
251 | { | ||
252 | "build", | ||
253 | Path.Combine(folder, "Package.wxs"), | ||
254 | Path.Combine(folder, "PackageComponents.wxs"), | ||
255 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
256 | "-bindpath", Path.Combine(folder, "data"), | ||
257 | "-intermediateFolder", intermediateFolder, | ||
258 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
259 | }, out var messages); | ||
260 | |||
261 | Assert.Equal(0, result); | ||
262 | |||
263 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); | ||
264 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
265 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt"))); | ||
266 | |||
267 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir")); | ||
268 | var section = intermediate.Sections.Single(); | ||
269 | |||
270 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | ||
271 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | ||
272 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | ||
273 | } | ||
274 | } | ||
275 | |||
276 | [Fact] | ||
277 | public void CanBuildWixipl() | ||
278 | { | ||
279 | var folder = TestData.Get(@"TestData\SingleFile"); | ||
280 | |||
281 | using (var fs = new DisposableFileSystem()) | ||
282 | { | ||
283 | var baseFolder = fs.GetFolder(); | ||
284 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
285 | |||
286 | var result = WixRunner.Execute(new[] | ||
287 | { | ||
288 | "build", | ||
289 | Path.Combine(folder, "Package.wxs"), | ||
290 | Path.Combine(folder, "PackageComponents.wxs"), | ||
291 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
292 | "-bindpath", Path.Combine(folder, "data"), | ||
293 | "-intermediateFolder", intermediateFolder, | ||
294 | "-o", Path.Combine(baseFolder, @"bin\test.wixipl") | ||
295 | }, out var messages); | ||
296 | |||
297 | Assert.Equal(0, result); | ||
298 | |||
299 | var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin")); | ||
300 | |||
301 | Assert.Equal(new[]{ | ||
302 | "test.wixipl" | ||
303 | }, builtFiles.Select(Path.GetFileName).ToArray()); | ||
304 | } | ||
305 | } | ||
306 | |||
307 | [Fact] | ||
308 | public void CanBuildWixlib() | ||
309 | { | ||
310 | var folder = TestData.Get(@"TestData\SingleFile"); | ||
311 | |||
312 | using (var fs = new DisposableFileSystem()) | ||
313 | { | ||
314 | var baseFolder = fs.GetFolder(); | ||
315 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
316 | |||
317 | var result = WixRunner.Execute(new[] | ||
318 | { | ||
319 | "build", | ||
320 | Path.Combine(folder, "Package.wxs"), | ||
321 | Path.Combine(folder, "PackageComponents.wxs"), | ||
322 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
323 | "-bindpath", Path.Combine(folder, "data"), | ||
324 | "-intermediateFolder", intermediateFolder, | ||
325 | "-o", Path.Combine(baseFolder, @"bin\test.wixlib") | ||
326 | }, out var messages); | ||
327 | |||
328 | Assert.Equal(0, result); | ||
329 | |||
330 | var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin")); | ||
331 | |||
332 | Assert.Equal(new[]{ | ||
333 | "test.wixlib" | ||
334 | }, builtFiles.Select(Path.GetFileName).ToArray()); | ||
335 | } | ||
336 | } | ||
337 | |||
338 | [Fact] | ||
339 | public void CanBuildWithIncludePath() | ||
340 | { | ||
341 | var folder = TestData.Get(@"TestData\IncludePath"); | ||
342 | var bindpath = Path.Combine(folder, "data"); | ||
343 | |||
344 | using (var fs = new DisposableFileSystem()) | ||
345 | { | ||
346 | var baseFolder = fs.GetFolder(); | ||
347 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
348 | |||
349 | var result = WixRunner.Execute(new[] | ||
350 | { | ||
351 | "build", | ||
352 | Path.Combine(folder, "Package.wxs"), | ||
353 | Path.Combine(folder, "PackageComponents.wxs"), | ||
354 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
355 | "-bindpath", bindpath, | ||
356 | "-intermediateFolder", intermediateFolder, | ||
357 | "-o", Path.Combine(baseFolder, @"bin\test.msi"), | ||
358 | "-i", bindpath, | ||
359 | }, out var messages); | ||
360 | |||
361 | Assert.Equal(0, result); | ||
362 | |||
363 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); | ||
364 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); | ||
365 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt"))); | ||
366 | |||
367 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); | ||
368 | var section = intermediate.Sections.Single(); | ||
369 | |||
370 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | ||
371 | Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path); | ||
372 | Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | ||
373 | } | ||
374 | } | ||
375 | |||
376 | [Fact(Skip = "Assembly information not getting gathered yet.")] | ||
377 | public void CanBuildWithAssembly() | ||
378 | { | ||
379 | var folder = TestData.Get(@"TestData\Assembly"); | ||
380 | |||
381 | using (var fs = new DisposableFileSystem()) | ||
382 | { | ||
383 | var baseFolder = fs.GetFolder(); | ||
384 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
385 | |||
386 | var result = WixRunner.Execute(new[] | ||
387 | { | ||
388 | "build", | ||
389 | Path.Combine(folder, "Package.wxs"), | ||
390 | Path.Combine(folder, "PackageComponents.wxs"), | ||
391 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
392 | "-bindpath", Path.Combine(folder, "data"), | ||
393 | "-intermediateFolder", intermediateFolder, | ||
394 | "-o", Path.Combine(baseFolder, @"bin\test.msi") | ||
395 | }, out var messages); | ||
396 | |||
397 | Assert.Equal(0, result); | ||
398 | |||
399 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); | ||
400 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); | ||
401 | Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\AssemblyMsiPackage\candle.exe"))); | ||
402 | |||
403 | var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir")); | ||
404 | var section = intermediate.Sections.Single(); | ||
405 | |||
406 | var wixFile = section.Tuples.OfType<WixFileTuple>().Single(); | ||
407 | Assert.Equal(Path.Combine(folder, @"data\candle.exe"), wixFile[WixFileTupleFields.Source].AsPath().Path); | ||
408 | Assert.Equal(@"candle.exe", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path); | ||
409 | |||
410 | var msiAssemblyNameTuples = section.Tuples.OfType<MsiAssemblyNameTuple>(); | ||
411 | Assert.NotEmpty(msiAssemblyNameTuples); | ||
412 | } | ||
413 | } | ||
414 | |||
415 | [Fact(Skip = "Not implemented yet.")] | ||
416 | public void CanBuildInstanceTransform() | ||
417 | { | ||
418 | var folder = TestData.Get(@"TestData\InstanceTransform"); | ||
419 | |||
420 | using (var fs = new DisposableFileSystem()) | ||
421 | { | ||
422 | var intermediateFolder = fs.GetFolder(); | ||
423 | |||
424 | var result = WixRunner.Execute(new[] | ||
425 | { | ||
426 | "build", | ||
427 | Path.Combine(folder, "Package.wxs"), | ||
428 | Path.Combine(folder, "PackageComponents.wxs"), | ||
429 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
430 | "-bindpath", Path.Combine(folder, "data"), | ||
431 | "-intermediateFolder", intermediateFolder, | ||
432 | "-o", Path.Combine(intermediateFolder, @"bin\test.msi") | ||
433 | }, out var messages); | ||
434 | |||
435 | Assert.Equal(0, result); | ||
436 | |||
437 | var pdb = Pdb.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"), false); | ||
438 | Assert.NotEmpty(pdb.Output.SubStorages); | ||
439 | } | ||
440 | } | ||
441 | } | ||
442 | } | ||