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 | } |
