diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/WixToolsetTest.Heat/HeatRunner.cs | 92 | ||||
-rw-r--r-- | src/test/WixToolsetTest.Heat/PayloadTests.cs | 66 | ||||
-rw-r--r-- | src/test/WixToolsetTest.Heat/TestData/.Data/Windows8.1-KB2937592-x86.msu | bin | 0 -> 309544 bytes | |||
-rw-r--r-- | src/test/WixToolsetTest.Heat/TestData/.Data/burn.exe | bin | 0 -> 463360 bytes | |||
-rw-r--r-- | src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedExePackagePayload.wxs | 6 | ||||
-rw-r--r-- | src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedMsuPackagePayload.wxs | 6 | ||||
-rw-r--r-- | src/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj | 28 |
7 files changed, 198 insertions, 0 deletions
diff --git a/src/test/WixToolsetTest.Heat/HeatRunner.cs b/src/test/WixToolsetTest.Heat/HeatRunner.cs new file mode 100644 index 00000000..287698a9 --- /dev/null +++ b/src/test/WixToolsetTest.Heat/HeatRunner.cs | |||
@@ -0,0 +1,92 @@ | |||
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.Harvesters | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Threading; | ||
8 | using System.Threading.Tasks; | ||
9 | using WixToolset.Core; | ||
10 | using WixToolset.Core.Burn; | ||
11 | using WixToolset.Core.TestPackage; | ||
12 | using WixToolset.Data; | ||
13 | using WixToolset.Extensibility.Data; | ||
14 | using WixToolset.Extensibility.Services; | ||
15 | using WixToolset.Harvesters; | ||
16 | |||
17 | /// <summary> | ||
18 | /// Utility class to emulate heat.exe. | ||
19 | /// </summary> | ||
20 | public static class HeatRunner | ||
21 | { | ||
22 | /// <summary> | ||
23 | /// Emulates calling heat.exe. | ||
24 | /// </summary> | ||
25 | /// <param name="args"></param> | ||
26 | /// <param name="messages"></param> | ||
27 | /// <param name="warningsAsErrors"></param> | ||
28 | /// <returns></returns> | ||
29 | public static int Execute(string[] args, out List<Message> messages, bool warningsAsErrors = true) | ||
30 | { | ||
31 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | ||
32 | var task = Execute(args, serviceProvider, out messages, warningsAsErrors: warningsAsErrors); | ||
33 | return task.Result; | ||
34 | } | ||
35 | |||
36 | /// <summary> | ||
37 | /// Emulates calling wix.exe with standard backends. | ||
38 | /// This overload always treats warnings as errors. | ||
39 | /// </summary> | ||
40 | /// <param name="args"></param> | ||
41 | /// <returns></returns> | ||
42 | public static WixRunnerResult Execute(params string[] args) | ||
43 | { | ||
44 | return Execute(true, args); | ||
45 | } | ||
46 | |||
47 | /// <summary> | ||
48 | /// Emulates calling wix.exe with standard backends. | ||
49 | /// </summary> | ||
50 | /// <param name="warningsAsErrors"></param> | ||
51 | /// <param name="args"></param> | ||
52 | /// <returns></returns> | ||
53 | public static WixRunnerResult Execute(bool warningsAsErrors, params string[] args) | ||
54 | { | ||
55 | var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); | ||
56 | var exitCode = Execute(args, serviceProvider, out var messages, warningsAsErrors: warningsAsErrors); | ||
57 | return new WixRunnerResult { ExitCode = exitCode.Result, Messages = messages.ToArray() }; | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Emulates calling wix.exe with standard backends. | ||
62 | /// </summary> | ||
63 | /// <param name="args"></param> | ||
64 | /// <param name="coreProvider"></param> | ||
65 | /// <param name="messages"></param> | ||
66 | /// <param name="warningsAsErrors"></param> | ||
67 | /// <returns></returns> | ||
68 | public static Task<int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List<Message> messages, bool warningsAsErrors = true) | ||
69 | { | ||
70 | coreProvider.AddBundleBackend(); | ||
71 | |||
72 | var listener = new TestMessageListener(); | ||
73 | |||
74 | messages = listener.Messages; | ||
75 | |||
76 | var messaging = coreProvider.GetService<IMessaging>(); | ||
77 | messaging.SetListener(listener); | ||
78 | |||
79 | if (warningsAsErrors) | ||
80 | { | ||
81 | messaging.WarningsAsError = true; | ||
82 | } | ||
83 | |||
84 | var arguments = coreProvider.GetService<ICommandLineArguments>(); | ||
85 | arguments.Populate(args); | ||
86 | |||
87 | var commandLine = HeatCommandLineFactory.CreateCommandLine(coreProvider); | ||
88 | var command = commandLine.ParseStandardCommandLine(arguments); | ||
89 | return command?.ExecuteAsync(CancellationToken.None) ?? Task.FromResult(1); | ||
90 | } | ||
91 | } | ||
92 | } | ||
diff --git a/src/test/WixToolsetTest.Heat/PayloadTests.cs b/src/test/WixToolsetTest.Heat/PayloadTests.cs new file mode 100644 index 00000000..8072f50d --- /dev/null +++ b/src/test/WixToolsetTest.Heat/PayloadTests.cs | |||
@@ -0,0 +1,66 @@ | |||
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.Harvesters | ||
4 | { | ||
5 | using System; | ||
6 | using System.IO; | ||
7 | using WixBuildTools.TestSupport; | ||
8 | using Xunit; | ||
9 | |||
10 | public class PayloadTests | ||
11 | { | ||
12 | [Fact] | ||
13 | public void CanHarvestExePackagePayload() | ||
14 | { | ||
15 | var folder = TestData.Get(@"TestData"); | ||
16 | |||
17 | using (var fs = new DisposableFileSystem()) | ||
18 | { | ||
19 | var baseFolder = fs.GetFolder(); | ||
20 | var outputFilePath = Path.Combine(baseFolder, "test.wxs"); | ||
21 | |||
22 | var result = HeatRunner.Execute(new[] | ||
23 | { | ||
24 | "exepackagepayload", | ||
25 | Path.Combine(folder, ".Data", "burn.exe"), | ||
26 | "-o", outputFilePath, | ||
27 | }); | ||
28 | |||
29 | result.AssertSuccess(); | ||
30 | |||
31 | Assert.True(File.Exists(outputFilePath)); | ||
32 | |||
33 | var expected = File.ReadAllText(Path.Combine(folder, "Payload", "HarvestedExePackagePayload.wxs")).Replace("\r\n", "\n"); | ||
34 | var actual = File.ReadAllText(outputFilePath).Replace("\r\n", "\n"); | ||
35 | Assert.Equal(expected, actual); | ||
36 | } | ||
37 | } | ||
38 | |||
39 | [Fact] | ||
40 | public void CanHarvestMsuPackagePayload() | ||
41 | { | ||
42 | var folder = TestData.Get(@"TestData"); | ||
43 | |||
44 | using (var fs = new DisposableFileSystem()) | ||
45 | { | ||
46 | var baseFolder = fs.GetFolder(); | ||
47 | var outputFilePath = Path.Combine(baseFolder, "test.wxs"); | ||
48 | |||
49 | var result = HeatRunner.Execute(new[] | ||
50 | { | ||
51 | "msupackagepayload", | ||
52 | Path.Combine(folder, ".Data", "Windows8.1-KB2937592-x86.msu"), | ||
53 | "-o", outputFilePath, | ||
54 | }); | ||
55 | |||
56 | result.AssertSuccess(); | ||
57 | |||
58 | Assert.True(File.Exists(outputFilePath)); | ||
59 | |||
60 | var expected = File.ReadAllText(Path.Combine(folder, "Payload", "HarvestedMsuPackagePayload.wxs")).Replace("\r\n", "\n"); | ||
61 | var actual = File.ReadAllText(outputFilePath).Replace("\r\n", "\n"); | ||
62 | Assert.Equal(expected, actual); | ||
63 | } | ||
64 | } | ||
65 | } | ||
66 | } | ||
diff --git a/src/test/WixToolsetTest.Heat/TestData/.Data/Windows8.1-KB2937592-x86.msu b/src/test/WixToolsetTest.Heat/TestData/.Data/Windows8.1-KB2937592-x86.msu new file mode 100644 index 00000000..c39f53b0 --- /dev/null +++ b/src/test/WixToolsetTest.Heat/TestData/.Data/Windows8.1-KB2937592-x86.msu | |||
Binary files differ | |||
diff --git a/src/test/WixToolsetTest.Heat/TestData/.Data/burn.exe b/src/test/WixToolsetTest.Heat/TestData/.Data/burn.exe new file mode 100644 index 00000000..2a4f423f --- /dev/null +++ b/src/test/WixToolsetTest.Heat/TestData/.Data/burn.exe | |||
Binary files differ | |||
diff --git a/src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedExePackagePayload.wxs b/src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedExePackagePayload.wxs new file mode 100644 index 00000000..40100f22 --- /dev/null +++ b/src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedExePackagePayload.wxs | |||
@@ -0,0 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
3 | <Fragment> | ||
4 | <ExePackagePayload Description="WiX Toolset Bootstrapper" Hash="F6E722518AC3AB7E31C70099368D5770788C179AA23226110DCF07319B1E1964E246A1E8AE72E2CF23E0138AFC281BAFDE45969204405E114EB20C8195DA7E5E" ProductName="Windows Installer XML Toolset" Size="463360" Version="3.14.1703.0" /> | ||
5 | </Fragment> | ||
6 | </Wix> \ No newline at end of file | ||
diff --git a/src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedMsuPackagePayload.wxs b/src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedMsuPackagePayload.wxs new file mode 100644 index 00000000..f203fe27 --- /dev/null +++ b/src/test/WixToolsetTest.Heat/TestData/Payload/HarvestedMsuPackagePayload.wxs | |||
@@ -0,0 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
3 | <Fragment> | ||
4 | <MsuPackagePayload Hash="904ADEA6AB675ACE16483138BF3F5850FD56ACB6E3A13AFA7263ED49C68CCE6CF84D6AAD6F99AAF175A95EE1A56C787C5AD968019056490B1073E7DBB7B9B7BE" Size="309544" /> | ||
5 | </Fragment> | ||
6 | </Wix> \ No newline at end of file | ||
diff --git a/src/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj b/src/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj new file mode 100644 index 00000000..4af6749c --- /dev/null +++ b/src/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj | |||
@@ -0,0 +1,28 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | |||
4 | <Project Sdk="Microsoft.NET.Sdk"> | ||
5 | <PropertyGroup> | ||
6 | <TargetFramework>netcoreapp3.1</TargetFramework> | ||
7 | <IsPackable>false</IsPackable> | ||
8 | </PropertyGroup> | ||
9 | |||
10 | <ItemGroup> | ||
11 | <Content Include="TestData\**" CopyToOutputDirectory="PreserveNewest" /> | ||
12 | </ItemGroup> | ||
13 | |||
14 | <ItemGroup> | ||
15 | <ProjectReference Include="..\..\heat\heat.csproj" /> | ||
16 | </ItemGroup> | ||
17 | |||
18 | <ItemGroup> | ||
19 | <PackageReference Include="WixBuildTools.TestSupport" Version="4.0.*" /> | ||
20 | <PackageReference Include="WixToolset.Core.TestPackage" Version="4.0.*" /> | ||
21 | </ItemGroup> | ||
22 | |||
23 | <ItemGroup> | ||
24 | <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" /> | ||
25 | <PackageReference Include="xunit" Version="2.4.1" /> | ||
26 | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" /> | ||
27 | </ItemGroup> | ||
28 | </Project> | ||