aboutsummaryrefslogtreecommitdiff
path: root/src/tools/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/test')
-rw-r--r--src/tools/test/WixToolsetTest.Heat/HeatFixture.cs136
-rw-r--r--src/tools/test/WixToolsetTest.Heat/HeatRunner.cs17
-rw-r--r--src/tools/test/WixToolsetTest.Heat/TestData/SingleFile/a.txt1
-rw-r--r--src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj14
4 files changed, 153 insertions, 15 deletions
diff --git a/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs b/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs
new file mode 100644
index 00000000..befcedcc
--- /dev/null
+++ b/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs
@@ -0,0 +1,136 @@
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.Heat
4{
5 using System.IO;
6 using System.Linq;
7 using WixBuildTools.TestSupport;
8 using Xunit;
9
10 public class HeatFixture
11 {
12 [Fact]
13 public void CanHarvestSimpleDirectory()
14 {
15 var folder = TestData.Get("TestData", "SingleFile");
16
17 using (var fs = new DisposableFileSystem())
18 {
19 var outputPath = Path.Combine(fs.GetFolder(), "out.wxs");
20
21 var args = new[]
22 {
23 "dir", folder,
24 "-o", outputPath
25 };
26
27 var result = HeatRunner.Execute(args);
28 result.AssertSuccess();
29
30 var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray();
31 WixAssert.CompareLineByLine(new[]
32 {
33 "<?xml version='1.0' encoding='utf-8'?>",
34 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
35 " <Fragment>",
36 " <StandardDirectory Id='TARGETDIR'>",
37 " <Directory Id='dirwsJn0Cqs9KdlDSFdQsu9ygYvMF8' Name='SingleFile' />",
38 " </StandardDirectory>",
39 " </Fragment>",
40 " <Fragment>",
41 " <DirectoryRef Id='dirwsJn0Cqs9KdlDSFdQsu9ygYvMF8'>",
42 " <Component Id='cmp0i3dThrp4nheCteEmXvHxBDa_VE' Guid='PUT-GUID-HERE'>",
43 " <File Id='filziMcXYgrmcbVF8PuTUfIB9Vgqo0' KeyPath='yes' Source='SourceDir\\a.txt' />",
44 " </Component>",
45 " </DirectoryRef>",
46 " </Fragment>",
47 "</Wix>",
48 }, wxs);
49 }
50 }
51
52 [Fact]
53 public void CanHarvestSimpleDirectoryToInstallFolder()
54 {
55 var folder = TestData.Get("TestData", "SingleFile");
56
57 using (var fs = new DisposableFileSystem())
58 {
59 var outputPath = Path.Combine(fs.GetFolder(), "out.wxs");
60
61 var args = new[]
62 {
63 "dir", folder,
64 "-dr", "INSTALLFOLDER",
65 "-o", outputPath
66 };
67
68 var result = HeatRunner.Execute(args);
69 result.AssertSuccess();
70
71 var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray();
72 WixAssert.CompareLineByLine(new[]
73 {
74 "<?xml version='1.0' encoding='utf-8'?>",
75 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
76 " <Fragment>",
77 " <DirectoryRef Id='INSTALLFOLDER'>",
78 " <Directory Id='dirlooNEIrtEBL2w_RhFEIgiKcUlxE' Name='SingleFile' />",
79 " </DirectoryRef>",
80 " </Fragment>",
81 " <Fragment>",
82 " <DirectoryRef Id='dirlooNEIrtEBL2w_RhFEIgiKcUlxE'>",
83 " <Component Id='cmpxHVF6oXohc0EWgRphmYZvw5.GGU' Guid='PUT-GUID-HERE'>",
84 " <File Id='filk_7KUAfL4VfzxSRsGFf_XOBHln0' KeyPath='yes' Source='SourceDir\\a.txt' />",
85 " </Component>",
86 " </DirectoryRef>",
87 " </Fragment>",
88 "</Wix>",
89 }, wxs);
90 }
91 }
92
93 [Fact]
94 public void CanHarvestFile()
95 {
96 var folder = TestData.Get("TestData", "SingleFile");
97
98 using (var fs = new DisposableFileSystem())
99 {
100 var outputPath = Path.Combine(fs.GetFolder(), "out.wxs");
101
102 var args = new[]
103 {
104 "file", Path.Combine(folder, "a.txt"),
105 "-cg", "GroupA",
106 "-dr", "ProgramFiles6432Folder",
107 "-o", outputPath
108
109 };
110
111 var result = HeatRunner.Execute(args);
112 result.AssertSuccess();
113
114 var wxs = File.ReadAllLines(outputPath).Select(s => s.Replace("\"", "'")).ToArray();
115 WixAssert.CompareLineByLine(new[]
116 {
117 "<?xml version='1.0' encoding='utf-8'?>",
118 "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
119 " <Fragment>",
120 " <StandardDirectory Id='ProgramFiles6432Folder'>",
121 " <Directory Id='dirl6r_Yc0gvMUEUVe5rioOOIIasoU' Name='SingleFile' />",
122 " </StandardDirectory>",
123 " </Fragment>",
124 " <Fragment>",
125 " <ComponentGroup Id='GroupA'>",
126 " <Component Id='cmpfBcW61_XzosRWK3EzUTBtJrcJD8' Directory='dirl6r_Yc0gvMUEUVe5rioOOIIasoU' Guid='PUT-GUID-HERE'>",
127 " <File Id='filKrZgaIOSKpNZXFnezZc9X.LKGpw' KeyPath='yes' Source='SourceDir\\SingleFile\\a.txt' />",
128 " </Component>",
129 " </ComponentGroup>",
130 " </Fragment>",
131 "</Wix>",
132 }, wxs);
133 }
134 }
135 }
136}
diff --git a/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs b/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs
index d8b6b39a..c914dcac 100644
--- a/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs
+++ b/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs
@@ -1,17 +1,14 @@
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. 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 2
3namespace WixToolsetTest.Harvesters 3namespace WixToolsetTest.Heat
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
7 using System.Threading;
8 using System.Threading.Tasks; 6 using System.Threading.Tasks;
9 using WixToolset.Core; 7 using WixToolset.Core;
10 using WixToolset.Core.TestPackage; 8 using WixToolset.Core.TestPackage;
11 using WixToolset.Data; 9 using WixToolset.Data;
12 using WixToolset.Extensibility.Data;
13 using WixToolset.Extensibility.Services; 10 using WixToolset.Extensibility.Services;
14 using WixToolset.Harvesters; 11 using WixToolset.Tools.Heat;
15 12
16 /// <summary> 13 /// <summary>
17 /// Utility class to emulate heat.exe. 14 /// Utility class to emulate heat.exe.
@@ -66,8 +63,6 @@ namespace WixToolsetTest.Harvesters
66 /// <returns></returns> 63 /// <returns></returns>
67 public static Task<int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List<Message> messages, bool warningsAsErrors = true) 64 public static Task<int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List<Message> messages, bool warningsAsErrors = true)
68 { 65 {
69 coreProvider.AddBundleBackend();
70
71 var listener = new TestMessageListener(); 66 var listener = new TestMessageListener();
72 67
73 messages = listener.Messages; 68 messages = listener.Messages;
@@ -80,12 +75,8 @@ namespace WixToolsetTest.Harvesters
80 messaging.WarningsAsError = true; 75 messaging.WarningsAsError = true;
81 } 76 }
82 77
83 var arguments = coreProvider.GetService<ICommandLineArguments>(); 78 var program = new Program();
84 arguments.Populate(args); 79 return program.Run(coreProvider, listener, args);
85
86 var commandLine = HeatCommandLineFactory.CreateCommandLine(coreProvider);
87 var command = commandLine.ParseStandardCommandLine(arguments);
88 return command?.ExecuteAsync(CancellationToken.None) ?? Task.FromResult(1);
89 } 80 }
90 } 81 }
91} 82}
diff --git a/src/tools/test/WixToolsetTest.Heat/TestData/SingleFile/a.txt b/src/tools/test/WixToolsetTest.Heat/TestData/SingleFile/a.txt
new file mode 100644
index 00000000..4410bb5e
--- /dev/null
+++ b/src/tools/test/WixToolsetTest.Heat/TestData/SingleFile/a.txt
@@ -0,0 +1 @@
This is a.txt
diff --git a/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj b/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj
index 73eb078c..c887297b 100644
--- a/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj
+++ b/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj
@@ -3,13 +3,23 @@
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="Microsoft.NET.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>netcoreapp3.1</TargetFramework> 6 <TargetFramework>net472</TargetFramework>
7 <IsPackable>false</IsPackable> 7 <IsPackable>false</IsPackable>
8 <DebugType>embedded</DebugType>
9 <DefaultItemExcludes>TestData\**;$(DefaultItemExcludes)</DefaultItemExcludes>
8 <SignOutput>false</SignOutput> 10 <SignOutput>false</SignOutput>
9 </PropertyGroup> 11 </PropertyGroup>
10 12
11 <ItemGroup> 13 <ItemGroup>
12 <PackageReference Include="WixBuildTools.TestSupport" /> 14 <Content Include="TestData\**" CopyToOutputDirectory="PreserveNewest" />
15 </ItemGroup>
16
17 <ItemGroup>
18 <ProjectReference Include="..\..\heat\heat.csproj" />
19 </ItemGroup>
20
21 <ItemGroup>
22 <PackageReference Include="WixToolset.Core.TestPackage" />
13 </ItemGroup> 23 </ItemGroup>
14 24
15 <ItemGroup> 25 <ItemGroup>