summaryrefslogtreecommitdiff
path: root/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs
diff options
context:
space:
mode:
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}