From b49c4f572e8195cb961bc80a5dcc99ed332b1ed5 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 15 Jan 2026 20:47:44 +0000
Subject: [PATCH 1/2] Initial plan
From b42811aa98df0c920d3aea11ce611849d0b14582 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 15 Jan 2026 21:02:27 +0000
Subject: [PATCH 2/2] Add test and codecov support to nuke build and CI
workflow
Co-authored-by: ScarletKuro <19953225+ScarletKuro@users.noreply.github.com>
---
.github/workflows/continuous.yml | 19 +++++++++++++++----
build/Build.cs | 10 +++++++++-
...m.Text.Json.DateTimeConverter.Tests.csproj | 4 ++++
3 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml
index a8a0244..6eac7bd 100644
--- a/.github/workflows/continuous.yml
+++ b/.github/workflows/continuous.yml
@@ -23,7 +23,7 @@ jobs:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
@@ -33,10 +33,21 @@ jobs:
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- - name: 'Run: Compile, Pack'
- run: ./build.cmd Compile Pack
+ - name: 'Run: Compile, Test, Pack'
+ run: ./build.cmd Compile Test Pack
+ - name: 'Upload coverage to Codecov'
+ uses: codecov/codecov-action@v5
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: artifacts/coverage/*.xml
+ fail_ci_if_error: false
+ - name: 'Publish: coverage'
+ uses: actions/upload-artifact@v5
+ with:
+ name: coverage
+ path: artifacts/coverage
- name: 'Publish: packages'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: packages
path: artifacts/packages
diff --git a/build/Build.cs b/build/Build.cs
index 25590f9..67834ed 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -8,6 +8,7 @@
using Nuke.Common.IO;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tooling;
+using Nuke.Common.Tools.Coverlet;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.GitHub;
using Nuke.Common.Utilities.Collections;
@@ -22,7 +23,7 @@
FetchDepth = 0,
On = [GitHubActionsTrigger.Push],
PublishArtifacts = true,
- InvokedTargets = [nameof(Compile), nameof(Pack)])]
+ InvokedTargets = [nameof(Compile), nameof(Test), nameof(Pack)])]
[GitHubActions(
"release",
GitHubActionsImage.UbuntuLatest,
@@ -59,6 +60,7 @@ class Build : NukeBuild
AbsolutePath TestsDirectory => RootDirectory / "tests";
AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
AbsolutePath PackagesDirectory => ArtifactsDirectory / "packages";
+ AbsolutePath CoverageDirectory => ArtifactsDirectory / "coverage";
Target Clean => _ => _
.Before(Restore)
@@ -104,16 +106,22 @@ class Build : NukeBuild
Target Test => _ => _
.DependsOn(Compile)
+ .Produces(CoverageDirectory / "*.xml")
.Executes(() =>
{
var projects = Solution.GetAllProjects("*.Tests");
+ CoverageDirectory.CreateOrCleanDirectory();
+
foreach (var project in projects)
{
DotNetTest(_ => _
.SetProjectFile(project.Path)
.SetConfiguration(Configuration)
.EnableNoBuild()
+ .EnableCollectCoverage()
+ .SetCoverletOutputFormat(CoverletOutputFormat.cobertura)
+ .SetCoverletOutput(CoverageDirectory / $"{project.Name}.xml")
);
}
});
diff --git a/src/Scarlet.System.Text.Json.DateTimeConverter.Tests/Scarlet.System.Text.Json.DateTimeConverter.Tests.csproj b/src/Scarlet.System.Text.Json.DateTimeConverter.Tests/Scarlet.System.Text.Json.DateTimeConverter.Tests.csproj
index 6a60c6a..6fd67cd 100644
--- a/src/Scarlet.System.Text.Json.DateTimeConverter.Tests/Scarlet.System.Text.Json.DateTimeConverter.Tests.csproj
+++ b/src/Scarlet.System.Text.Json.DateTimeConverter.Tests/Scarlet.System.Text.Json.DateTimeConverter.Tests.csproj
@@ -14,6 +14,10 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+