From dcdf5cdaa26d905bb5ed897231e4926fc5ada6ad Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 22:34:05 -0500 Subject: [PATCH 1/9] Install coverlet --- src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj | 4 ++++ src/NUnitFramework/slow-tests/slow-nunit-tests.csproj | 4 ++++ src/NUnitFramework/tests/nunit.framework.tests.csproj | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj b/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj index 2abb1a2917..09e64f440c 100644 --- a/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj +++ b/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj @@ -12,6 +12,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj b/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj index e5cb70ab07..1c92d15b85 100644 --- a/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj +++ b/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj @@ -14,6 +14,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/NUnitFramework/tests/nunit.framework.tests.csproj b/src/NUnitFramework/tests/nunit.framework.tests.csproj index eee1b460ef..d4edeec2e0 100644 --- a/src/NUnitFramework/tests/nunit.framework.tests.csproj +++ b/src/NUnitFramework/tests/nunit.framework.tests.csproj @@ -10,6 +10,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + From b8997881e1553ef1e25db630d78ae53df81f2a6f Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 22:41:31 -0500 Subject: [PATCH 2/9] Add coverlet console to tool manifest --- .config/dotnet-tools.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 9fcc910342..2d795186b3 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -13,6 +13,12 @@ "commands": [ "SignClient" ] + }, + "coverlet.console": { + "version": "3.2.0", + "commands": [ + "coverlet" + ] } } } \ No newline at end of file From 36c920c78ea92029d9cc437c1b9926ba719ecbe0 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 22:44:24 -0500 Subject: [PATCH 3/9] Use add-in syntax --- build.cake | 1 + 1 file changed, 1 insertion(+) diff --git a/build.cake b/build.cake index 6a8e9fd1b2..76850e1708 100644 --- a/build.cake +++ b/build.cake @@ -1,4 +1,5 @@ #tool NUnit.ConsoleRunner&version=3.12.0 +#addin nuget:?package=Cake.Coverlet ////////////////////////////////////////////////////////////////////// // ARGUMENTS From c1bf8c000b6264a46aad3e56d39578ce309e8adc Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 22:49:03 -0500 Subject: [PATCH 4/9] Attempt some basic coverlet --- build.cake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/build.cake b/build.cake index 76850e1708..4a3290965e 100644 --- a/build.cake +++ b/build.cake @@ -177,6 +177,17 @@ Task("TestNetFramework") RunTest(dir + EXECUTABLE_NUNITLITE_TEST_RUNNER_EXE, dir, FRAMEWORK_TESTS, dir + "nunit.framework.tests.xml", runtime, ref ErrorDetail); //RunNUnitTests(dir, FRAMEWORK_TESTS, runtime, ref ErrorDetail); RunTest(dir + EXECUTABLE_NUNITLITE_TESTS_EXE, dir, runtime, ref ErrorDetail); + + // TODO: Extract + var coverletSettings = new CoverletSettings { + CollectCoverage = true, + CoverletOutputFormat = CoverletOutputFormat.opencover, + CoverletOutputDirectory = Directory(@".\coverage-results\"), + CoverletOutputName = $"results-{runtime}_{DateTime.UtcNow:dd-MM-yyyy-HH-mm-ss-FFF}" + }; + + Coverlet(dir); + PublishTestResults(runtime); }); @@ -195,6 +206,17 @@ foreach (var runtime in NetCoreTests) var dir = BIN_DIR + runtime + "/"; RunDotnetCoreTests(dir + NUNITLITE_RUNNER_DLL, dir, FRAMEWORK_TESTS, runtime, GetResultXmlPath(FRAMEWORK_TESTS, runtime), ref ErrorDetail); RunDotnetCoreTests(dir + EXECUTABLE_NUNITLITE_TESTS_DLL, dir, runtime, ref ErrorDetail); + + // TODO: Extract + var coverletSettings = new CoverletSettings { + CollectCoverage = true, + CoverletOutputFormat = CoverletOutputFormat.opencover, + CoverletOutputDirectory = Directory(@".\coverage-results\"), + CoverletOutputName = $"results-netstandard20_{runtime}_{DateTime.UtcNow:dd-MM-yyyy-HH-mm-ss-FFF}" + }; + + Coverlet(dir); + PublishTestResults(runtime); }); From 91a52d8e8683b7212593383925d43bd65c06f38d Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 22:51:50 -0500 Subject: [PATCH 5/9] Add Cake.Coverlet --- .../nunitlite.tests/nunitlite.tests.csproj | 12 ++++++++++++ .../slow-tests/slow-nunit-tests.csproj | 12 ++++++++++++ .../tests/nunit.framework.tests.csproj | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj b/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj index 09e64f440c..1f6529edba 100644 --- a/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj +++ b/src/NUnitFramework/nunitlite.tests/nunitlite.tests.csproj @@ -33,4 +33,16 @@ + + + 3.0.4 + + + + + + 3.0.4 + + + diff --git a/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj b/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj index 1c92d15b85..aac42e971c 100644 --- a/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj +++ b/src/NUnitFramework/slow-tests/slow-nunit-tests.csproj @@ -21,4 +21,16 @@ + + + 3.0.4 + + + + + + 3.0.4 + + + diff --git a/src/NUnitFramework/tests/nunit.framework.tests.csproj b/src/NUnitFramework/tests/nunit.framework.tests.csproj index d4edeec2e0..363aa8036b 100644 --- a/src/NUnitFramework/tests/nunit.framework.tests.csproj +++ b/src/NUnitFramework/tests/nunit.framework.tests.csproj @@ -51,4 +51,16 @@ + + + + 3.0.4 + + + + + + 3.0.4 + + From 27b809923a70907534261a41e5bfa9f3c7015872 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 22:54:06 -0500 Subject: [PATCH 6/9] Specify explicit add-in version --- build.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cake b/build.cake index 4a3290965e..fa6381eaf7 100644 --- a/build.cake +++ b/build.cake @@ -1,5 +1,5 @@ #tool NUnit.ConsoleRunner&version=3.12.0 -#addin nuget:?package=Cake.Coverlet +#addin nuget:?package=Cake.Coverlet&version=3.0.4 ////////////////////////////////////////////////////////////////////// // ARGUMENTS From f93ecfc1af3a20be2226ccab7ac856e568639851 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 23:26:57 -0500 Subject: [PATCH 7/9] Update cake to v3 --- .config/dotnet-tools.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 2d795186b3..33349ba3b7 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "cake.tool": { - "version": "1.1.0", + "version": "3.0.0", "commands": [ "dotnet-cake" ] From 9e7c006c21204c07c190d4042ee947e0707ef174 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 2 Feb 2023 23:27:12 -0500 Subject: [PATCH 8/9] Update build for cake v3 conventions --- build.cake | 74 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/build.cake b/build.cake index fa6381eaf7..7c6b29c263 100644 --- a/build.cake +++ b/build.cake @@ -1,5 +1,5 @@ #tool NUnit.ConsoleRunner&version=3.12.0 -#addin nuget:?package=Cake.Coverlet&version=3.0.4 +#addin "nuget:?package=Cake.Coverlet&version=3.0.4" ////////////////////////////////////////////////////////////////////// // ARGUMENTS @@ -135,7 +135,7 @@ Task("NuGetRestore") .Description("Restores NuGet Packages") .Does(() => { - DotNetCoreRestore(SOLUTION_FILE); + DotNetRestore(SOLUTION_FILE); }); ////////////////////////////////////////////////////////////////////// @@ -147,15 +147,15 @@ Task("Build") .IsDependentOn("NuGetRestore") .Does(() => { - DotNetCoreBuild(SOLUTION_FILE, CreateDotNetCoreBuildSettings()); + DotNetBuild(SOLUTION_FILE, CreateDotNetBuildSettings()); }); -DotNetCoreBuildSettings CreateDotNetCoreBuildSettings() => - new DotNetCoreBuildSettings +DotNetBuildSettings CreateDotNetBuildSettings() => + new DotNetBuildSettings { Configuration = configuration, NoRestore = true, - Verbosity = DotNetCoreVerbosity.Minimal + Verbosity = DotNetVerbosity.Minimal }; ////////////////////////////////////////////////////////////////////// @@ -186,7 +186,8 @@ Task("TestNetFramework") CoverletOutputName = $"results-{runtime}_{DateTime.UtcNow:dd-MM-yyyy-HH-mm-ss-FFF}" }; - Coverlet(dir); + var testSettings = new DotNetTestSettings { }; + DotNetTest(dir, testSettings, coverletSettings); PublishTestResults(runtime); }); @@ -214,8 +215,9 @@ foreach (var runtime in NetCoreTests) CoverletOutputDirectory = Directory(@".\coverage-results\"), CoverletOutputName = $"results-netstandard20_{runtime}_{DateTime.UtcNow:dd-MM-yyyy-HH-mm-ss-FFF}" }; - - Coverlet(dir); + + var testSettings = new DotNetTestSettings { }; + DotNetTest(dir, testSettings, coverletSettings); PublishTestResults(runtime); }); @@ -237,30 +239,30 @@ var RootFiles = new FilePath[] // Not all of these are present in every framework // The Microsoft and System assemblies are part of the BCL // used by the .NET 4.0 framework. 4.0 tests will not run without them. -var FrameworkFiles = new FilePath[] +var FrameworkFiles = new ConvertableFilePath[] { - "mock-assembly.dll", - "mock-assembly.exe", - "nunit.framework.dll", - "nunit.framework.pdb", - "nunit.framework.xml", - "nunit.framework.tests.dll", - "nunit.testdata.dll", - "nunitlite.dll", - "nunitlite.pdb", - "nunitlite.tests.exe", - "nunitlite.tests.dll", - "slow-nunit-tests.dll", - "nunitlite-runner.exe", - "nunitlite-runner.pdb", - "nunitlite-runner.dll", - "Microsoft.Threading.Tasks.dll", - "Microsoft.Threading.Tasks.Extensions.Desktop.dll", - "Microsoft.Threading.Tasks.Extensions.dll", - "System.IO.dll", - "System.Runtime.dll", - "System.Threading.Tasks.dll", - "System.ValueTuple.dll" + File("mock-assembly.dll"), + File("mock-assembly.exe"), + File("nunit.framework.dll"), + File("nunit.framework.pdb"), + File("nunit.framework.xml"), + File("nunit.framework.tests.dll"), + File("nunit.testdata.dll"), + File("nunitlite.dll"), + File("nunitlite.pdb"), + File("nunitlite.tests.exe"), + File("nunitlite.tests.dll"), + File("slow-nunit-tests.dll"), + File("nunitlite-runner.exe"), + File("nunitlite-runner.pdb"), + File("nunitlite-runner.dll"), + File("Microsoft.Threading.Tasks.dll"), + File("Microsoft.Threading.Tasks.Extensions.Desktop.dll"), + File("Microsoft.Threading.Tasks.Extensions.dll"), + File("System.IO.dll"), + File("System.Runtime.dll"), + File("System.Threading.Tasks.dll"), + File("System.ValueTuple.dll") }; string CurrentImageDir => $"{IMAGE_DIR}NUnit-{packageVersion}/"; @@ -280,15 +282,15 @@ Task("CreateImage") foreach (var runtime in LibraryFrameworks) { var targetDir = imageBinDir + Directory(runtime); - var sourceDir = BIN_DIR + Directory(runtime); + var sourceDir = Directory(BIN_DIR) + Directory(runtime); CreateDirectory(targetDir); - foreach (FilePath file in FrameworkFiles) + foreach (ConvertableFilePath file in FrameworkFiles) { - var sourcePath = sourceDir + "/" + file; + var sourcePath = Directory(sourceDir) + File(file); if (FileExists(sourcePath)) CopyFileToDirectory(sourcePath, targetDir); } - var schemaPath = sourceDir + "/Schemas"; + var schemaPath = sourceDir + Directory("/Schemas"); if (DirectoryExists(schemaPath)) CopyDirectory(sourceDir, targetDir); } From 7f6d7c4f067a068e4257b649e60b954d026d2525 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Fri, 3 Feb 2023 11:21:24 -0500 Subject: [PATCH 9/9] some more conversions to directories etc. (and run my stuff first so I can troubleshoot it) --- build.cake | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/build.cake b/build.cake index 7c6b29c263..1064b6c326 100644 --- a/build.cake +++ b/build.cake @@ -48,24 +48,24 @@ var NetCoreTests = new String[] // DEFINE RUN CONSTANTS ////////////////////////////////////////////////////////////////////// -var PROJECT_DIR = Context.Environment.WorkingDirectory.FullPath + "/"; -var PACKAGE_DIR = Argument("artifact-dir", PROJECT_DIR + "package") + "/"; -var BIN_DIR = PROJECT_DIR + "bin/" + configuration + "/"; -var IMAGE_DIR = PROJECT_DIR + "images/"; +var PROJECT_DIR = Directory(Context.Environment.WorkingDirectory.FullPath); +var PACKAGE_DIR = Directory(Argument("artifact-dir", PROJECT_DIR.Path + "package")); +var BIN_DIR = PROJECT_DIR + Directory("bin/") + Directory(configuration); +var IMAGE_DIR = PROJECT_DIR + Directory("images/"); var SOLUTION_FILE = "./nunit.sln"; // Test Runners -var NUNITLITE_RUNNER_DLL = "nunitlite-runner.dll"; +var NUNITLITE_RUNNER_DLL = File("nunitlite-runner.dll"); // Test Assemblies -var FRAMEWORK_TESTS = "nunit.framework.tests.dll"; -var EXECUTABLE_NUNITLITE_TEST_RUNNER_EXE = "nunitlite-runner.exe"; -var EXECUTABLE_NUNITLITE_TESTS_EXE = "nunitlite.tests.exe"; -var EXECUTABLE_NUNITLITE_TESTS_DLL = "nunitlite.tests.dll"; +var FRAMEWORK_TESTS = File("nunit.framework.tests.dll"); +var EXECUTABLE_NUNITLITE_TEST_RUNNER_EXE = File("nunitlite-runner.exe"); +var EXECUTABLE_NUNITLITE_TESTS_EXE = File("nunitlite.tests.exe"); +var EXECUTABLE_NUNITLITE_TESTS_DLL = File("nunitlite.tests.dll"); // Packages -var ZIP_PACKAGE = PACKAGE_DIR + "NUnit.Framework-" + packageVersion + ".zip"; +var ZIP_PACKAGE = PACKAGE_DIR + File("NUnit.Framework-" + packageVersion + ".zip"); /////////////////////////////////////////////////////////////////////////////// // SETUP / TEARDOWN @@ -173,10 +173,7 @@ Task("TestNetFramework") .Does(() => { var runtime = "net462"; - var dir = BIN_DIR + runtime + "/"; - RunTest(dir + EXECUTABLE_NUNITLITE_TEST_RUNNER_EXE, dir, FRAMEWORK_TESTS, dir + "nunit.framework.tests.xml", runtime, ref ErrorDetail); - //RunNUnitTests(dir, FRAMEWORK_TESTS, runtime, ref ErrorDetail); - RunTest(dir + EXECUTABLE_NUNITLITE_TESTS_EXE, dir, runtime, ref ErrorDetail); + var dir = BIN_DIR + Directory(runtime); // TODO: Extract var coverletSettings = new CoverletSettings { @@ -186,8 +183,14 @@ Task("TestNetFramework") CoverletOutputName = $"results-{runtime}_{DateTime.UtcNow:dd-MM-yyyy-HH-mm-ss-FFF}" }; - var testSettings = new DotNetTestSettings { }; - DotNetTest(dir, testSettings, coverletSettings); + var testSettings = new DotNetTestSettings { }; + DotNetTest(dir.Path.FullPath, testSettings, coverletSettings); + + + RunTest(dir + EXECUTABLE_NUNITLITE_TEST_RUNNER_EXE, dir, FRAMEWORK_TESTS, dir + File("nunit.framework.tests.xml"), runtime, ref ErrorDetail); + //RunNUnitTests(dir, FRAMEWORK_TESTS, runtime, ref ErrorDetail); + RunTest(dir + EXECUTABLE_NUNITLITE_TESTS_EXE, dir, runtime, ref ErrorDetail); + PublishTestResults(runtime); }); @@ -204,11 +207,8 @@ foreach (var runtime in NetCoreTests) .OnError(exception => { ErrorDetail.Add(exception.Message); }) .Does(() => { - var dir = BIN_DIR + runtime + "/"; - RunDotnetCoreTests(dir + NUNITLITE_RUNNER_DLL, dir, FRAMEWORK_TESTS, runtime, GetResultXmlPath(FRAMEWORK_TESTS, runtime), ref ErrorDetail); - RunDotnetCoreTests(dir + EXECUTABLE_NUNITLITE_TESTS_DLL, dir, runtime, ref ErrorDetail); + var dir = BIN_DIR + Directory(runtime); - // TODO: Extract var coverletSettings = new CoverletSettings { CollectCoverage = true, CoverletOutputFormat = CoverletOutputFormat.opencover, @@ -217,7 +217,13 @@ foreach (var runtime in NetCoreTests) }; var testSettings = new DotNetTestSettings { }; - DotNetTest(dir, testSettings, coverletSettings); + + DotNetTest(dir.Path.FullPath, testSettings, coverletSettings); + + RunDotnetCoreTests(dir + NUNITLITE_RUNNER_DLL, dir, FRAMEWORK_TESTS, runtime, GetResultXmlPath(FRAMEWORK_TESTS, runtime), ref ErrorDetail); + RunDotnetCoreTests(dir + EXECUTABLE_NUNITLITE_TESTS_DLL, dir, runtime, ref ErrorDetail); + + // TODO: Extract PublishTestResults(runtime); });