From ae96ff06cadd0141f48d88a7e9983ca81dace613 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Fri, 14 Feb 2025 23:49:12 -0500 Subject: Convert tools\ to MSTest and traversal projects. --- .../WixInternal.MSTestSupport/MsbuildUtilities.cs | 8 +- .../WixInternal.MSTestSupport/WixAssert.cs | 14 ++-- .../DirectoryToPayloadGroupFixture.cs | 11 +-- src/tools/test/WixToolsetTest.Heat/HeatFixture.cs | 17 +++-- src/tools/test/WixToolsetTest.Heat/HeatRunner.cs | 2 +- .../WixToolsetTest.Heat/WixToolsetTest.Heat.csproj | 6 +- .../WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs | 89 +++++++++++----------- .../WixToolsetTest.HeatTasks.csproj | 8 +- src/tools/tools.cmd | 16 +--- src/tools/tools_t.proj | 28 +++++++ 10 files changed, 113 insertions(+), 86 deletions(-) create mode 100644 src/tools/tools_t.proj (limited to 'src') diff --git a/src/internal/WixInternal.MSTestSupport/MsbuildUtilities.cs b/src/internal/WixInternal.MSTestSupport/MsbuildUtilities.cs index 4776e6f1..8f3fecd9 100644 --- a/src/internal/WixInternal.MSTestSupport/MsbuildUtilities.cs +++ b/src/internal/WixInternal.MSTestSupport/MsbuildUtilities.cs @@ -16,7 +16,7 @@ namespace WixInternal.MSTestSupport public static class MsbuildUtilities { - public static MsbuildRunnerResult BuildProject(BuildSystem buildSystem, string projectPath, string[] arguments = null, string configuration = "Release", string verbosityLevel = "normal", bool suppressValidation = true) + public static MsbuildRunnerResult BuildProject(BuildSystem buildSystem, string projectPath, string[] arguments = null, string configuration = "Release", string verbosityLevel = "normal", bool suppressValidation = true, bool binlog = true) { var allArgs = new List { @@ -26,9 +26,13 @@ namespace WixInternal.MSTestSupport // Node reuse means that child msbuild processes can stay around after the build completes. // Under that scenario, the root msbuild does not reliably close its streams which causes us to hang. "-nr:false", - MsbuildUtilities.GetQuotedSwitch(buildSystem, "bl", Path.ChangeExtension(projectPath, ".binlog")) }; + if (binlog) + { + MsbuildUtilities.GetQuotedSwitch(buildSystem, "bl", Path.ChangeExtension(projectPath, ".binlog")); + } + if (arguments != null) { allArgs.AddRange(arguments); diff --git a/src/internal/WixInternal.MSTestSupport/WixAssert.cs b/src/internal/WixInternal.MSTestSupport/WixAssert.cs index 927ebee6..b4c59fa5 100644 --- a/src/internal/WixInternal.MSTestSupport/WixAssert.cs +++ b/src/internal/WixInternal.MSTestSupport/WixAssert.cs @@ -77,15 +77,19 @@ namespace WixInternal.MSTestSupport Assert.AreNotEqual(expected, actual, comparer); } - public static void Single(IEnumerable collection) + public static T Single(IEnumerable collection) { - Assert.AreEqual(1, collection.Count()); + return collection.Single(); } - public static void Single(IEnumerable collection, Func predicate) + public static T Single(IEnumerable collection, Func predicate) { - var results = collection.Where(predicate); - Assert.AreEqual(1, results.Count()); + return collection.Where(predicate).Single(); + } + + public static void All(IEnumerable collection, Func predicate) + { + Assert.IsTrue(collection.All(predicate)); } public static void Empty(IEnumerable collection) diff --git a/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs b/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs index 9ca84936..db71c4cd 100644 --- a/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs +++ b/src/tools/test/WixToolsetTest.Heat/DirectoryToPayloadGroupFixture.cs @@ -5,12 +5,13 @@ namespace WixToolsetTest.Heat using System; using System.IO; using System.Linq; - using WixInternal.TestSupport; - using Xunit; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using WixInternal.MSTestSupport; + [TestClass] public class DirectoryToPayloadGroupFixture { - [Fact] + [TestMethod] public void CanHarvestSimpleDirectory() { var folder = TestData.Get("TestData", "SingleFile"); @@ -43,7 +44,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestSimpleDirectoryWithSourceDirSubstitution() { var folder = TestData.Get("TestData", "SingleFile"); @@ -77,7 +78,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestNestedFiles() { var folder = TestData.Get("TestData", "NestedFiles"); diff --git a/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs b/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs index d517e209..c5f3df74 100644 --- a/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs +++ b/src/tools/test/WixToolsetTest.Heat/HeatFixture.cs @@ -4,12 +4,13 @@ namespace WixToolsetTest.Heat { using System.IO; using System.Linq; - using WixInternal.TestSupport; - using Xunit; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using WixInternal.MSTestSupport; + [TestClass] public class HeatFixture { - [Fact] + [TestMethod] public void CanHarvestSimpleDirectory() { var folder = TestData.Get("TestData", "SingleFile"); @@ -48,7 +49,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestSimpleDirectoryToComponentGroup() { var folder = TestData.Get("TestData", "SingleFile"); @@ -88,7 +89,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestSimpleDirectoryToInstallFolder() { var folder = TestData.Get("TestData", "SingleFile"); @@ -129,7 +130,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestFile() { var folder = TestData.Get("TestData", "SingleFile"); @@ -171,7 +172,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestRegistry() { var folder = TestData.Get("TestData", "RegFile"); @@ -195,7 +196,7 @@ namespace WixToolsetTest.Heat } } - [Fact] + [TestMethod] public void CanHarvestRegistryIntoComponentGroup() { var folder = TestData.Get("TestData", "RegFile"); diff --git a/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs b/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs index 0f6c4f66..d8dec06f 100644 --- a/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs +++ b/src/tools/test/WixToolsetTest.Heat/HeatRunner.cs @@ -5,7 +5,7 @@ namespace WixToolsetTest.Heat using System.Collections.Generic; using System.Threading.Tasks; using WixToolset.Core; - using WixInternal.Core.TestPackage; + using WixInternal.Core.MSTestPackage; using WixToolset.Data; using WixToolset.Extensibility.Services; using WixToolset.Tools.Heat; diff --git a/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj b/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj index fb86ecdf..660dca3b 100644 --- a/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj +++ b/src/tools/test/WixToolsetTest.Heat/WixToolsetTest.Heat.csproj @@ -1,11 +1,11 @@ - + net472 TestData\**;$(DefaultItemExcludes) - true + true @@ -17,6 +17,6 @@ - + diff --git a/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs b/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs index f8bc3fda..61efad47 100644 --- a/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs +++ b/src/tools/test/WixToolsetTest.HeatTasks/MsbuildHeatFixture.cs @@ -5,12 +5,13 @@ namespace WixToolsetTest.Sdk using System; using System.IO; using System.Linq; - using WixInternal.TestSupport; - using WixInternal.Core.TestPackage; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using WixInternal.MSTestSupport; + using WixInternal.Core.MSTestPackage; using WixToolset.Data; using WixToolset.Data.Symbols; - using Xunit; + [TestClass] public class MsbuildHeatFixture { public static readonly string HeatTargetsPath = Path.Combine(Path.GetDirectoryName(new Uri(typeof(MsbuildHeatFixture).Assembly.CodeBase).LocalPath), "..", "..", "..", "publish", "WixToolset.Heat", "build", "WixToolset.Heat.targets"); @@ -20,10 +21,10 @@ namespace WixToolsetTest.Sdk EnsureWixSdkCached(); } - [Theory] - [InlineData(BuildSystem.DotNetCoreSdk)] - [InlineData(BuildSystem.MSBuild)] - [InlineData(BuildSystem.MSBuild64)] + [TestMethod] + [DataRow(BuildSystem.DotNetCoreSdk)] + [DataRow(BuildSystem.MSBuild)] + [DataRow(BuildSystem.MSBuild64)] public void CanBuildHeatFilePackage(BuildSystem buildSystem) { var sourceFolder = TestData.Get("TestData", "HeatFilePackage"); @@ -44,10 +45,10 @@ namespace WixToolsetTest.Sdk result.AssertSuccess(); var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem); - Assert.Single(heatCommandLines); + WixAssert.Single(heatCommandLines); var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); - Assert.All(warnings, warning => warning.Contains("warning HEAT5149")); + WixAssert.All(warnings, warning => warning.Contains("warning HEAT5149")); var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_ProductComponents_INSTALLFOLDER_HeatFilePackage.wixproj_file.wxs"); var generatedContents = File.ReadAllText(generatedFilePath); @@ -76,10 +77,10 @@ namespace WixToolsetTest.Sdk } } - [Theory] - [InlineData(BuildSystem.DotNetCoreSdk)] - [InlineData(BuildSystem.MSBuild)] - [InlineData(BuildSystem.MSBuild64)] + [TestMethod] + [DataRow(BuildSystem.DotNetCoreSdk)] + [DataRow(BuildSystem.MSBuild)] + [DataRow(BuildSystem.MSBuild64)] public void CanBuildHeatFileWithMultipleFilesPackage(BuildSystem buildSystem) { var sourceFolder = TestData.Get(@"TestData", "HeatFileMultipleFilesSameFileName"); @@ -100,13 +101,13 @@ namespace WixToolsetTest.Sdk result.AssertSuccess(); var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "file", buildSystem); - Assert.Equal(2, heatCommandLines.Count()); + Assert.AreEqual(2, heatCommandLines.Count()); var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); - Assert.All(warnings, warning => warning.Contains("warning HEAT5149")); + WixAssert.All(warnings, warning => warning.Contains("warning HEAT5149")); var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_TxtProductComponents_INSTALLFOLDER_MyProgram.txt_file.wxs"); - Assert.True(File.Exists(generatedFilePath)); + Assert.IsTrue(File.Exists(generatedFilePath)); var generatedContents = File.ReadAllText(generatedFilePath); var testXml = generatedContents.GetTestXml(); @@ -126,7 +127,7 @@ namespace WixToolsetTest.Sdk "", testXml); generatedFilePath = Path.Combine(intermediateFolder, "Release", "_JsonProductComponents_INSTALLFOLDER_MyProgram.json_file.wxs"); - Assert.True(File.Exists(generatedFilePath)); + Assert.IsTrue(File.Exists(generatedFilePath)); generatedContents = File.ReadAllText(generatedFilePath); testXml = generatedContents.GetTestXml(); @@ -146,7 +147,7 @@ namespace WixToolsetTest.Sdk "", testXml); var pdbPath = Path.Combine(binFolder, "HeatFileMultipleFilesSameFileName.wixpdb"); - Assert.True(File.Exists(pdbPath)); + Assert.IsTrue(File.Exists(pdbPath)); var intermediate = Intermediate.Load(pdbPath); var section = intermediate.Sections.Single(); @@ -157,13 +158,13 @@ namespace WixToolsetTest.Sdk } } - [Theory] - [InlineData(BuildSystem.DotNetCoreSdk, true)] - [InlineData(BuildSystem.DotNetCoreSdk, false)] - [InlineData(BuildSystem.MSBuild, true)] - [InlineData(BuildSystem.MSBuild, false)] - [InlineData(BuildSystem.MSBuild64, true)] - [InlineData(BuildSystem.MSBuild64, false)] + [TestMethod] + [DataRow(BuildSystem.DotNetCoreSdk, true)] + [DataRow(BuildSystem.DotNetCoreSdk, false)] + [DataRow(BuildSystem.MSBuild, true)] + [DataRow(BuildSystem.MSBuild, false)] + [DataRow(BuildSystem.MSBuild64, true)] + [DataRow(BuildSystem.MSBuild64, false)] public void CanBuildHeatProjectPreSdkStyle(BuildSystem buildSystem, bool useToolsVersion) { var sourceFolder = TestData.Get(@"TestData", "HeatProject"); @@ -186,22 +187,22 @@ namespace WixToolsetTest.Sdk result.AssertSuccess(); var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "project", buildSystem); - var heatCommandLine = Assert.Single(heatCommandLines); + var heatCommandLine = WixAssert.Single(heatCommandLines); if (useToolsVersion && buildSystem != BuildSystem.DotNetCoreSdk) { - Assert.Contains("-usetoolsversion", heatCommandLine); + Assert.IsTrue(heatCommandLine.Contains("-usetoolsversion")); } else { - Assert.DoesNotContain("-usetoolsversion", heatCommandLine); + Assert.IsFalse(heatCommandLine.Contains("-usetoolsversion")); } var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); - Assert.All(warnings, warning => warning.Contains("warning HEAT5149")); + WixAssert.All(warnings, warning => warning.Contains("warning HEAT5149")); var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_Tools Version 4Cs.wxs"); - Assert.True(File.Exists(generatedFilePath)); + Assert.IsTrue(File.Exists(generatedFilePath)); var generatedContents = File.ReadAllText(generatedFilePath); var testXml = generatedContents.GetTestXml(); @@ -260,7 +261,7 @@ namespace WixToolsetTest.Sdk "", testXml); var pdbPath = Path.Combine(binFolder, "Release", "HeatProjectPreSdkStyle.wixpdb"); - Assert.True(File.Exists(pdbPath)); + Assert.IsTrue(File.Exists(pdbPath)); var intermediate = Intermediate.Load(pdbPath); var section = intermediate.Sections.Single(); @@ -270,13 +271,13 @@ namespace WixToolsetTest.Sdk } } - [Theory] - [InlineData(BuildSystem.DotNetCoreSdk, true)] - [InlineData(BuildSystem.DotNetCoreSdk, false)] - [InlineData(BuildSystem.MSBuild, true)] - [InlineData(BuildSystem.MSBuild, false)] - [InlineData(BuildSystem.MSBuild64, true)] - [InlineData(BuildSystem.MSBuild64, false)] + [TestMethod] + [DataRow(BuildSystem.DotNetCoreSdk, true)] + [DataRow(BuildSystem.DotNetCoreSdk, false)] + [DataRow(BuildSystem.MSBuild, true)] + [DataRow(BuildSystem.MSBuild, false)] + [DataRow(BuildSystem.MSBuild64, true)] + [DataRow(BuildSystem.MSBuild64, false)] public void CanBuildHeatProjectSdkStyle(BuildSystem buildSystem, bool useToolsVersion) { var sourceFolder = TestData.Get(@"TestData\HeatProject"); @@ -307,22 +308,22 @@ namespace WixToolsetTest.Sdk result.AssertSuccess(); var heatCommandLines = MsbuildUtilities.GetToolCommandLines(result, "heat", "project", buildSystem); - var heatCommandLine = Assert.Single(heatCommandLines); + var heatCommandLine = WixAssert.Single(heatCommandLines); if (useToolsVersion && buildSystem != BuildSystem.DotNetCoreSdk) { - Assert.Contains("-usetoolsversion", heatCommandLine); + Assert.IsTrue(heatCommandLine.Contains("-usetoolsversion")); } else { - Assert.DoesNotContain("-usetoolsversion", heatCommandLine); + Assert.IsFalse(heatCommandLine.Contains("-usetoolsversion")); } var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); - Assert.All(warnings, warning => warning.Contains("warning HEAT5149")); + WixAssert.All(warnings, warning => warning.Contains("warning HEAT5149")); var generatedFilePath = Path.Combine(intermediateFolder, "Release", "_SdkStyleCs.wxs"); - Assert.True(File.Exists(generatedFilePath)); + Assert.IsTrue(File.Exists(generatedFilePath)); var generatedContents = File.ReadAllText(generatedFilePath); var testXml = generatedContents.GetTestXml(); @@ -379,7 +380,7 @@ namespace WixToolsetTest.Sdk "", testXml); var pdbPath = Path.Combine(binFolder, "Release", "HeatProjectSdkStyle.wixpdb"); - Assert.True(File.Exists(pdbPath)); + Assert.IsTrue(File.Exists(pdbPath)); var intermediate = Intermediate.Load(pdbPath); var section = intermediate.Sections.Single(); diff --git a/src/tools/test/WixToolsetTest.HeatTasks/WixToolsetTest.HeatTasks.csproj b/src/tools/test/WixToolsetTest.HeatTasks/WixToolsetTest.HeatTasks.csproj index 1d808f53..13ec5ac3 100644 --- a/src/tools/test/WixToolsetTest.HeatTasks/WixToolsetTest.HeatTasks.csproj +++ b/src/tools/test/WixToolsetTest.HeatTasks/WixToolsetTest.HeatTasks.csproj @@ -1,11 +1,11 @@ - + net472 TestData\**;$(DefaultItemExcludes) - true + true @@ -14,7 +14,7 @@ - - + + diff --git a/src/tools/tools.cmd b/src/tools/tools.cmd index fe90cf07..132c0f10 100644 --- a/src/tools/tools.cmd +++ b/src/tools/tools.cmd @@ -19,20 +19,8 @@ @echo Building tools %_C% -:: Build -msbuild -Restore tools.sln -p:Configuration=%_C% -tl -nologo -m -warnaserror -bl:%_L%\tools_build.binlog || exit /b - -:: Publish -msbuild publish_t.proj -p:Configuration=%_C% -tl -nologo -m -warnaserror -bl:%_L%\tools_publish.binlog || exit /b - -:: Test -dotnet test ^ - %_B%\test\WixToolsetTest.Heat\net472\WixToolsetTest.Heat.dll ^ - %_B%\test\WixToolsetTest.HeatTasks\net472\WixToolsetTest.HeatTasks.dll ^ - --nologo -l "trx;LogFileName=%_L%\TestResults\tools.trx" || exit /b - -:: Pack -msbuild -t:Pack WixToolset.Heat -p:Configuration=%_C% -p:NoBuild=true -tl -nologo -m -warnaserror -bl:%_L%\tools_pack.binlog || exit /b +:: Build, Publish, Test, Pack +msbuild -Restore tools_t.proj -p:Configuration=%_C% -tl -nologo -m -warnaserror -bl:%_L%\tools.binlog || exit /b @goto :end diff --git a/src/tools/tools_t.proj b/src/tools/tools_t.proj new file mode 100644 index 00000000..60685ef1 --- /dev/null +++ b/src/tools/tools_t.proj @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3-55-g6feb