aboutsummaryrefslogtreecommitdiff
path: root/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2022-07-26 17:20:39 -0700
committerRob Mensching <rob@firegiant.com>2022-08-01 20:25:19 -0700
commita627ca9b720047e633a8fe72003ab9bee31006c5 (patch)
tree2bc8a924bb4141ab718e74d08f6459a0ffe8d573 /src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
parent521eb3c9cf38823a2c4019abb85dc0b3200b92cb (diff)
downloadwix-a627ca9b720047e633a8fe72003ab9bee31006c5.tar.gz
wix-a627ca9b720047e633a8fe72003ab9bee31006c5.tar.bz2
wix-a627ca9b720047e633a8fe72003ab9bee31006c5.zip
Create WixToolset.Heat.nupkg to distribute heat.exe and Heat targets
Moves Heat functionality to the "tools" layer and packages it all up in WixToolset.Heat.nupkg for distribution in WiX v4. Completes 6838
Diffstat (limited to '')
-rw-r--r--src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs (renamed from src/wix/test/WixToolsetTest.Sdk/MsbuildHeatFixture.cs)105
1 files changed, 70 insertions, 35 deletions
diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildHeatFixture.cs b/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
index f1fa2453..d54da457 100644
--- a/src/wix/test/WixToolsetTest.Sdk/MsbuildHeatFixture.cs
+++ b/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
@@ -3,7 +3,6 @@
3namespace WixToolsetTest.Sdk 3namespace WixToolsetTest.Sdk
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic;
7 using System.IO; 6 using System.IO;
8 using System.Linq; 7 using System.Linq;
9 using WixBuildTools.TestSupport; 8 using WixBuildTools.TestSupport;
@@ -14,23 +13,34 @@ namespace WixToolsetTest.Sdk
14 13
15 public class MsbuildHeatFixture 14 public class MsbuildHeatFixture
16 { 15 {
16 public static readonly string HeatTargetsPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildHeatFixture).Assembly.CodeBase).AbsolutePath), "..", "..", "..", "publish", "WixToolset.Heat", "build", "WixToolset.Heat.targets");
17
18 public MsbuildHeatFixture()
19 {
20 EnsureWixSdkCached();
21 }
22
17 [Theory] 23 [Theory]
18 [InlineData(BuildSystem.DotNetCoreSdk)] 24 [InlineData(BuildSystem.DotNetCoreSdk)]
19 [InlineData(BuildSystem.MSBuild)] 25 [InlineData(BuildSystem.MSBuild)]
20 [InlineData(BuildSystem.MSBuild64)] 26 [InlineData(BuildSystem.MSBuild64)]
21 public void CanBuildHeatFilePackage(BuildSystem buildSystem) 27 public void CanBuildHeatFilePackage(BuildSystem buildSystem)
22 { 28 {
23 var sourceFolder = TestData.Get(@"TestData\HeatFilePackage"); 29 var sourceFolder = TestData.Get("TestData", "HeatFilePackage");
24 30
25 using (var fs = new TestDataFolderFileSystem()) 31 using (var fs = new DisposableFileSystem())
26 { 32 {
27 fs.Initialize(sourceFolder); 33 var baseFolder = fs.GetFolder();
28 var baseFolder = fs.BaseFolder; 34 var binFolder = Path.Combine(baseFolder, @"bin");
29 var binFolder = Path.Combine(baseFolder, @"bin\");
30 var intermediateFolder = Path.Combine(baseFolder, @"obj\"); 35 var intermediateFolder = Path.Combine(baseFolder, @"obj\");
31 var projectPath = Path.Combine(baseFolder, "HeatFilePackage.wixproj"); 36 var projectPath = Path.Combine(sourceFolder, "HeatFilePackage.wixproj");
32 37
33 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); 38 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] {
39 "-Restore",
40 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "HeatTargetsPath", MsbuildHeatFixture.HeatTargetsPath),
41 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "BaseIntermediateOutputPath", intermediateFolder),
42 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "OutputPath", binFolder),
43 });
34 result.AssertSuccess(); 44 result.AssertSuccess();
35 45
36 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem, true); 46 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem, true);
@@ -39,9 +49,7 @@ namespace WixToolsetTest.Sdk
39 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); 49 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
40 WixAssert.StringCollectionEmpty(warnings); 50 WixAssert.StringCollectionEmpty(warnings);
41 51
42 var generatedFilePath = Path.Combine(intermediateFolder, "x86", "Release", "_ProductComponents_INSTALLFOLDER_HeatFilePackage.wixproj_file.wxs"); 52 var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_ProductComponents_INSTALLFOLDER_HeatFilePackage.wixproj_file.wxs");
43 Assert.True(File.Exists(generatedFilePath));
44
45 var generatedContents = File.ReadAllText(generatedFilePath); 53 var generatedContents = File.ReadAllText(generatedFilePath);
46 var testXml = generatedContents.GetTestXml(); 54 var testXml = generatedContents.GetTestXml();
47 WixAssert.StringEqual(@"<Wix>" + 55 WixAssert.StringEqual(@"<Wix>" +
@@ -59,9 +67,7 @@ namespace WixToolsetTest.Sdk
59 "</Fragment>" + 67 "</Fragment>" +
60 "</Wix>", testXml); 68 "</Wix>", testXml);
61 69
62 var pdbPath = Path.Combine(binFolder, "x86", "Release", "HeatFilePackage.wixpdb"); 70 var pdbPath = Path.Combine(binFolder, "HeatFilePackage.wixpdb");
63 Assert.True(File.Exists(pdbPath));
64
65 var intermediate = Intermediate.Load(pdbPath); 71 var intermediate = Intermediate.Load(pdbPath);
66 var section = intermediate.Sections.Single(); 72 var section = intermediate.Sections.Single();
67 73
@@ -76,17 +82,21 @@ namespace WixToolsetTest.Sdk
76 [InlineData(BuildSystem.MSBuild64)] 82 [InlineData(BuildSystem.MSBuild64)]
77 public void CanBuildHeatFileWithMultipleFilesPackage(BuildSystem buildSystem) 83 public void CanBuildHeatFileWithMultipleFilesPackage(BuildSystem buildSystem)
78 { 84 {
79 var sourceFolder = TestData.Get(@"TestData\HeatFileMultipleFilesSameFileName"); 85 var sourceFolder = TestData.Get(@"TestData", "HeatFileMultipleFilesSameFileName");
80 86
81 using (var fs = new TestDataFolderFileSystem()) 87 using (var fs = new DisposableFileSystem())
82 { 88 {
83 fs.Initialize(sourceFolder); 89 var baseFolder = fs.GetFolder();
84 var baseFolder = fs.BaseFolder;
85 var binFolder = Path.Combine(baseFolder, @"bin\"); 90 var binFolder = Path.Combine(baseFolder, @"bin\");
86 var intermediateFolder = Path.Combine(baseFolder, @"obj\"); 91 var intermediateFolder = Path.Combine(baseFolder, @"obj\");
87 var projectPath = Path.Combine(baseFolder, "HeatFileMultipleFilesSameFileName.wixproj"); 92 var projectPath = Path.Combine(sourceFolder, "HeatFileMultipleFilesSameFileName.wixproj");
88 93
89 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); 94 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] {
95 "-Restore",
96 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "HeatTargetsPath", MsbuildHeatFixture.HeatTargetsPath),
97 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "BaseIntermediateOutputPath", intermediateFolder),
98 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "OutputPath", binFolder),
99 });
90 result.AssertSuccess(); 100 result.AssertSuccess();
91 101
92 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem, true); 102 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem, true);
@@ -95,7 +105,7 @@ namespace WixToolsetTest.Sdk
95 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); 105 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
96 WixAssert.StringCollectionEmpty(warnings); 106 WixAssert.StringCollectionEmpty(warnings);
97 107
98 var generatedFilePath = Path.Combine(intermediateFolder, "x86", "Release", "_TxtProductComponents_INSTALLFOLDER_MyProgram.txt_file.wxs"); 108 var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_TxtProductComponents_INSTALLFOLDER_MyProgram.txt_file.wxs");
99 Assert.True(File.Exists(generatedFilePath)); 109 Assert.True(File.Exists(generatedFilePath));
100 110
101 var generatedContents = File.ReadAllText(generatedFilePath); 111 var generatedContents = File.ReadAllText(generatedFilePath);
@@ -115,7 +125,7 @@ namespace WixToolsetTest.Sdk
115 "</Fragment>" + 125 "</Fragment>" +
116 "</Wix>", testXml); 126 "</Wix>", testXml);
117 127
118 generatedFilePath = Path.Combine(intermediateFolder, "x86", "Release", "_JsonProductComponents_INSTALLFOLDER_MyProgram.json_file.wxs"); 128 generatedFilePath = Path.Combine(intermediateFolder, "Release", "_JsonProductComponents_INSTALLFOLDER_MyProgram.json_file.wxs");
119 Assert.True(File.Exists(generatedFilePath)); 129 Assert.True(File.Exists(generatedFilePath));
120 130
121 generatedContents = File.ReadAllText(generatedFilePath); 131 generatedContents = File.ReadAllText(generatedFilePath);
@@ -135,7 +145,7 @@ namespace WixToolsetTest.Sdk
135 "</Fragment>" + 145 "</Fragment>" +
136 "</Wix>", testXml); 146 "</Wix>", testXml);
137 147
138 var pdbPath = Path.Combine(binFolder, "x86", "Release", "HeatFileMultipleFilesSameFileName.wixpdb"); 148 var pdbPath = Path.Combine(binFolder, "HeatFileMultipleFilesSameFileName.wixpdb");
139 Assert.True(File.Exists(pdbPath)); 149 Assert.True(File.Exists(pdbPath));
140 150
141 var intermediate = Intermediate.Load(pdbPath); 151 var intermediate = Intermediate.Load(pdbPath);
@@ -156,11 +166,13 @@ namespace WixToolsetTest.Sdk
156 [InlineData(BuildSystem.MSBuild64, false)] 166 [InlineData(BuildSystem.MSBuild64, false)]
157 public void CanBuildHeatProjectPreSdkStyle(BuildSystem buildSystem, bool useToolsVersion) 167 public void CanBuildHeatProjectPreSdkStyle(BuildSystem buildSystem, bool useToolsVersion)
158 { 168 {
159 var sourceFolder = TestData.Get(@"TestData\HeatProject"); 169 var sourceFolder = TestData.Get(@"TestData", "HeatProject");
160 170
161 using (var fs = new TestDataFolderFileSystem()) 171 using (var fs = new TestDataFolderFileSystem())
162 { 172 {
163 fs.Initialize(sourceFolder); 173 fs.Initialize(sourceFolder);
174 File.Copy("global.json", Path.Combine(fs.BaseFolder, "global.json"));
175
164 var baseFolder = Path.Combine(fs.BaseFolder, "HeatProjectPreSdkStyle"); 176 var baseFolder = Path.Combine(fs.BaseFolder, "HeatProjectPreSdkStyle");
165 var binFolder = Path.Combine(baseFolder, @"bin\"); 177 var binFolder = Path.Combine(baseFolder, @"bin\");
166 var intermediateFolder = Path.Combine(baseFolder, @"obj\"); 178 var intermediateFolder = Path.Combine(baseFolder, @"obj\");
@@ -168,8 +180,9 @@ namespace WixToolsetTest.Sdk
168 180
169 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] 181 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[]
170 { 182 {
171 useToolsVersion ? $"-p:HarvestProjectsUseToolsVersion=true" : String.Empty, 183 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "HeatTargetsPath", MsbuildHeatFixture.HeatTargetsPath),
172 }); 184 useToolsVersion ? $"-p:HarvestProjectsUseToolsVersion=true" : String.Empty,
185 });
173 result.AssertSuccess(); 186 result.AssertSuccess();
174 187
175 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "project", buildSystem, true); 188 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "project", buildSystem, true);
@@ -187,7 +200,7 @@ namespace WixToolsetTest.Sdk
187 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); 200 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
188 WixAssert.StringCollectionEmpty(warnings); 201 WixAssert.StringCollectionEmpty(warnings);
189 202
190 var generatedFilePath = Path.Combine(intermediateFolder, "x86", "Release", "_ToolsVersion4Cs.wxs"); 203 var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_ToolsVersion4Cs.wxs");
191 Assert.True(File.Exists(generatedFilePath)); 204 Assert.True(File.Exists(generatedFilePath));
192 205
193 var generatedContents = File.ReadAllText(generatedFilePath); 206 var generatedContents = File.ReadAllText(generatedFilePath);
@@ -246,7 +259,7 @@ namespace WixToolsetTest.Sdk
246 "</Fragment>" + 259 "</Fragment>" +
247 "</Wix>", testXml); 260 "</Wix>", testXml);
248 261
249 var pdbPath = Path.Combine(binFolder, "x86", "Release", "HeatProjectPreSdkStyle.wixpdb"); 262 var pdbPath = Path.Combine(binFolder, "Release", "HeatProjectPreSdkStyle.wixpdb");
250 Assert.True(File.Exists(pdbPath)); 263 Assert.True(File.Exists(pdbPath));
251 264
252 var intermediate = Intermediate.Load(pdbPath); 265 var intermediate = Intermediate.Load(pdbPath);
@@ -271,22 +284,26 @@ namespace WixToolsetTest.Sdk
271 using (var fs = new TestDataFolderFileSystem()) 284 using (var fs = new TestDataFolderFileSystem())
272 { 285 {
273 fs.Initialize(sourceFolder); 286 fs.Initialize(sourceFolder);
287 File.Copy("global.json", Path.Combine(fs.BaseFolder, "global.json"));
288
274 var baseFolder = Path.Combine(fs.BaseFolder, "HeatProjectSdkStyle"); 289 var baseFolder = Path.Combine(fs.BaseFolder, "HeatProjectSdkStyle");
275 var binFolder = Path.Combine(baseFolder, @"bin\"); 290 var binFolder = Path.Combine(baseFolder, @"bin\");
276 var intermediateFolder = Path.Combine(baseFolder, @"obj\"); 291 var intermediateFolder = Path.Combine(baseFolder, @"obj\");
277 var projectPath = Path.Combine(baseFolder, "HeatProjectSdkStyle.wixproj"); 292 var projectPath = Path.Combine(fs.BaseFolder, "HeatProjectSdkStyle", "HeatProjectSdkStyle.wixproj");
278 var referencedProjectPath = Path.Combine(fs.BaseFolder, "SdkStyleCs", "SdkStyleCs.csproj"); 293 var referencedProjectPath = Path.Combine(fs.BaseFolder, "SdkStyleCs", "SdkStyleCs.csproj");
279 294
280 var result = MsbuildUtilities.BuildProject(buildSystem, referencedProjectPath, new[] 295 var result = MsbuildUtilities.BuildProject(buildSystem, referencedProjectPath, new[]
281 { 296 {
282 "-t:restore", 297 "-t:restore",
283 }); 298 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "HeatTargetsPath", MsbuildHeatFixture.HeatTargetsPath),
299 });
284 result.AssertSuccess(); 300 result.AssertSuccess();
285 301
286 result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] 302 result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[]
287 { 303 {
288 useToolsVersion ? $"-p:HarvestProjectsUseToolsVersion=true" : String.Empty, 304 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "HeatTargetsPath", MsbuildHeatFixture.HeatTargetsPath),
289 }); 305 useToolsVersion ? $"-p:HarvestProjectsUseToolsVersion=true" : String.Empty,
306 });
290 result.AssertSuccess(); 307 result.AssertSuccess();
291 308
292 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "project", buildSystem, true); 309 var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "project", buildSystem, true);
@@ -304,7 +321,7 @@ namespace WixToolsetTest.Sdk
304 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); 321 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
305 WixAssert.StringCollectionEmpty(warnings); 322 WixAssert.StringCollectionEmpty(warnings);
306 323
307 var generatedFilePath = Path.Combine(intermediateFolder, "x86", "Release", "_SdkStyleCs.wxs"); 324 var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_SdkStyleCs.wxs");
308 Assert.True(File.Exists(generatedFilePath)); 325 Assert.True(File.Exists(generatedFilePath));
309 326
310 var generatedContents = File.ReadAllText(generatedFilePath); 327 var generatedContents = File.ReadAllText(generatedFilePath);
@@ -361,7 +378,7 @@ namespace WixToolsetTest.Sdk
361 "</Fragment>" + 378 "</Fragment>" +
362 "</Wix>", testXml); 379 "</Wix>", testXml);
363 380
364 var pdbPath = Path.Combine(binFolder, "x86", "Release", "HeatProjectSdkStyle.wixpdb"); 381 var pdbPath = Path.Combine(binFolder, "Release", "HeatProjectSdkStyle.wixpdb");
365 Assert.True(File.Exists(pdbPath)); 382 Assert.True(File.Exists(pdbPath));
366 383
367 var intermediate = Intermediate.Load(pdbPath); 384 var intermediate = Intermediate.Load(pdbPath);
@@ -371,5 +388,23 @@ namespace WixToolsetTest.Sdk
371 WixAssert.StringEqual(Path.Combine(fs.BaseFolder, "SdkStyleCs", "bin", "Release", "netstandard2.0\\\\SdkStyleCs.dll"), fileSymbol[FileSymbolFields.Source].AsPath()?.Path); 388 WixAssert.StringEqual(Path.Combine(fs.BaseFolder, "SdkStyleCs", "bin", "Release", "netstandard2.0\\\\SdkStyleCs.dll"), fileSymbol[FileSymbolFields.Source].AsPath()?.Path);
372 } 389 }
373 } 390 }
391
392 /// <summary>
393 /// This method exists to get the WixToolset.Sdk.nupkg into the NuGet package cache using the global.json
394 /// and nuget.config in the root of the repository. By pre-caching the WiX SDK, the rest of the tests will
395 /// pull the binaries out of the cache instead of needing to find the original .nupkg in the build artifacts
396 /// folder (which requires use of nuget.config found in the root of the repo)
397 /// </summary>
398 private static void EnsureWixSdkCached()
399 {
400 // This EnsureWixSdkCached project exists only to pre-cache the WixToolset.Sdk for use by later projects.
401 var sourceFolder = TestData.Get("TestData", "EnsureWixSdkCached");
402
403 var result = MsbuildUtilities.BuildProject(BuildSystem.DotNetCoreSdk, Path.Combine(sourceFolder, "EnsureWixSdkCached.wixproj"), new[]
404 {
405 "-t:restore",
406 });
407 result.AssertSuccess();
408 }
374 } 409 }
375} 410}