diff options
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 @@ | |||
3 | namespace WixToolsetTest.Sdk | 3 | namespace 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 | } |