diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-04-22 17:38:36 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-04-29 16:49:19 -0700 |
| commit | 35606d2cd04a7b1bec1d669f9619501dff2bf9dc (patch) | |
| tree | 9dfdca153ab55e842f1e0ae6962fa1214c488c00 /src/test | |
| parent | 19f147cc9d56924b8f556bebfa9be5ab3dbeb186 (diff) | |
| download | wix-35606d2cd04a7b1bec1d669f9619501dff2bf9dc.tar.gz wix-35606d2cd04a7b1bec1d669f9619501dff2bf9dc.tar.bz2 wix-35606d2cd04a7b1bec1d669f9619501dff2bf9dc.zip | |
Simplify heat by creating a single executable
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> | ||
