diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bbabcc3..e65602c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,5 @@ name: CI -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - on: push: branches: [ main ] @@ -15,14 +12,21 @@ jobs: build: runs-on: ubuntu-latest + permissions: + contents: read + steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - - name: Setup .NET 10 - uses: actions/setup-dotnet@v5 + - name: Setup .NET + uses: actions/setup-dotnet@v6 with: - dotnet-version: '10.0.x' + # 8.0.x supplies the runtime the net8.0 test run executes on; the + # build itself uses the newest installed SDK (10.0.x). + dotnet-version: | + 8.0.x + 10.0.x - name: Restore run: dotnet restore @@ -37,7 +41,7 @@ jobs: run: dotnet pack --configuration Release --no-build --output ./artifacts - name: Upload package artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: nuget-package # Capture both .nupkg and .snupkg so the publish job's @@ -51,19 +55,20 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') permissions: + contents: read # actions/checkout — an explicit `permissions` block sets unlisted scopes to `none` id-token: write # required for NuGet trusted publishing (OIDC token issuance) steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Setup .NET 10 - uses: actions/setup-dotnet@v5 + uses: actions/setup-dotnet@v6 with: dotnet-version: '10.0.x' - name: Download artifact - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: nuget-package path: ./artifacts diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c63c00..e122e8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [Unreleased] + +### Changed + +- **Test suite migrated to xUnit.net v3 (`xunit.v3` 4.0.0)** from `xunit` 2.9.3. + Contributor-facing only — no library code, public API, or shipped package + contents changed. v3 test projects are self-executing console apps and run on + [Microsoft.Testing.Platform](https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-intro) + rather than VSTest, so a root `global.json` now opts `dotnet test` into the + MTP runner. `Microsoft.NET.Test.Sdk` and `xunit.runner.visualstudio` are no + longer needed and were dropped. + +- **Tests now run against both shipped TFMs.** The test project multi-targets + `net8.0;net10.0`, mirroring the library, so `lib/net8.0` is actually executed + against its own dependency graph instead of only being compiled. Previously + the suite ran on `net10.0` only. Running the full suite locally now requires + the .NET 8 runtime alongside the .NET 10 SDK. + +### Removed + +- **`Microsoft.SourceLink.GitHub` package reference.** The .NET SDK has bundled + SourceLink since .NET 8; the explicit reference was redundant. Verified + byte-identical `.nuspec` and `.snupkg` output either way — consumers still get + repository metadata and step-through sources. + +### Fixed + +- **`PackageOutputPath` no longer breaks non-Windows builds.** The hardcoded + `C:\nuget-local\` local dev feed is now guarded to Windows; previously every + `dotnet build` on Linux/macOS and in CI created a literal `C:\nuget-local\` + directory under `src/`. +- **CI publish job could not check out the repo.** Its `permissions` block listed + only `id-token: write`, and GitHub sets every unlisted scope to `none`, leaving + `actions/checkout` without `contents: read`. + +--- + ## [0.3.0] — 2026-07-24 ### Changed @@ -82,6 +119,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 interpolation, colour validation, tagline strategies, renderer output, and the quote pool). +[Unreleased]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Splash/compare/v0.3.0...HEAD [0.3.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Splash/releases/tag/v0.3.0 [0.2.0]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Splash/releases/tag/v0.2.0 [0.1.2]: https://github.com/StuartMeeks/NextIteration.SpectreConsole.Splash/releases/tag/v0.1.2 diff --git a/Directory.Packages.props b/Directory.Packages.props index 1bafd33..8d91e1b 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,13 +7,10 @@ - - - - + diff --git a/global.json b/global.json new file mode 100644 index 0000000..3140116 --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "test": { + "runner": "Microsoft.Testing.Platform" + } +} diff --git a/src/NextIteration.SpectreConsole.Splash/NextIteration.SpectreConsole.Splash.csproj b/src/NextIteration.SpectreConsole.Splash/NextIteration.SpectreConsole.Splash.csproj index b846efa..153949d 100644 --- a/src/NextIteration.SpectreConsole.Splash/NextIteration.SpectreConsole.Splash.csproj +++ b/src/NextIteration.SpectreConsole.Splash/NextIteration.SpectreConsole.Splash.csproj @@ -3,7 +3,6 @@ net8.0;net10.0 enable - enable en true latest @@ -12,10 +11,11 @@ NextIteration.SpectreConsole.Splash 0.3.0 - Stuart Meeks Configurable Figgle + Spectre.Console splash screen for .NET CLIs — gradient palette, pluggable tagline strategy, single-markup-call render path. true - C:\nuget-local\ + + C:\nuget-local\ true MIT README.md @@ -42,7 +42,6 @@ - diff --git a/tests/NextIteration.SpectreConsole.Splash.Tests/GradientTests.cs b/tests/NextIteration.SpectreConsole.Splash.Tests/GradientTests.cs index 60ea4be..c66ec06 100644 --- a/tests/NextIteration.SpectreConsole.Splash.Tests/GradientTests.cs +++ b/tests/NextIteration.SpectreConsole.Splash.Tests/GradientTests.cs @@ -78,10 +78,10 @@ public void Width_one_returns_first_stop() { var result = Gradient.Generate(["#123456", "#FFFFFF"], 1); - Assert.Single(result); - Assert.Equal(0x12, result[0].R); - Assert.Equal(0x34, result[0].G); - Assert.Equal(0x56, result[0].B); + var only = Assert.Single(result); + Assert.Equal(0x12, only.R); + Assert.Equal(0x34, only.G); + Assert.Equal(0x56, only.B); } [Fact] diff --git a/tests/NextIteration.SpectreConsole.Splash.Tests/NextIteration.SpectreConsole.Splash.Tests.csproj b/tests/NextIteration.SpectreConsole.Splash.Tests/NextIteration.SpectreConsole.Splash.Tests.csproj index e56d1fb..1447a3d 100644 --- a/tests/NextIteration.SpectreConsole.Splash.Tests/NextIteration.SpectreConsole.Splash.Tests.csproj +++ b/tests/NextIteration.SpectreConsole.Splash.Tests/NextIteration.SpectreConsole.Splash.Tests.csproj @@ -1,9 +1,12 @@ - net10.0 + + net8.0;net10.0 + + Exe enable - enable false true @@ -11,10 +14,8 @@ - - - +