diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index b4ab074..4fe341f 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -22,8 +22,11 @@ jobs: - name: dotnet format check run: dotnet format arcade.slnx --verify-no-changes --verbosity minimal + - name: dotnet pack sdk + run: dotnet pack src/sdk/Sdk.slnx -p:Version=${{ steps.version.outputs.version }} + - name: dotnet pack - run: dotnet pack arcade.slnx -p:Version=${{ steps.version.outputs.version }} + run: dotnet pack arcade.slnx -p:Version=${{ steps.version.outputs.version }} - name: dotnet test run: dotnet test --solution arcade.slnx -p:Version=${{ steps.version.outputs.version }} diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 9609014..7bfd81a 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -19,8 +19,11 @@ jobs: id: version uses: ./.forgejo/actions/version + - name: dotnet pack sdk + run: dotnet pack src/sdk/Sdk.slnx -p:Version=${{ steps.version.outputs.version }} + - name: dotnet pack - run: dotnet pack arcade.slnx -p:Version=${{ steps.version.outputs.version }} + run: dotnet pack arcade.slnx -p:Version=${{ steps.version.outputs.version }} - name: upload packages uses: https://code.geekeey.de/actions/artifacts/push@ae8d20e174a8706675e6d54ebd3719a2802ea9dd # 1 diff --git a/Directory.Packages.props b/Directory.Packages.props index 649f17a..accabe6 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,8 +1,8 @@ - - true - - - - - + + true + + + + + \ No newline at end of file diff --git a/arcade.slnx b/arcade.slnx index 8850128..ce92a47 100644 --- a/arcade.slnx +++ b/arcade.slnx @@ -1,7 +1,3 @@ - - - - diff --git a/src/sdk.tests/Geekeey.Arcade.NET.Tests.csproj b/src/sdk.tests/Geekeey.Arcade.NET.Tests.csproj index 9f899a0..2486b7b 100644 --- a/src/sdk.tests/Geekeey.Arcade.NET.Tests.csproj +++ b/src/sdk.tests/Geekeey.Arcade.NET.Tests.csproj @@ -2,7 +2,6 @@ net10.0 false - true Exe $(DefaultItemExcludes);$(MSBuildProjectDirectory)/fixtures/**/* @@ -10,4 +9,8 @@ + + + + diff --git a/src/sdk.tests/SdkNuGetTests.cs b/src/sdk.tests/SdkNuGetTests.cs index efe5596..daab200 100644 --- a/src/sdk.tests/SdkNuGetTests.cs +++ b/src/sdk.tests/SdkNuGetTests.cs @@ -3,6 +3,7 @@ using System.Text.Json; using System.Text.Json.Serialization; +using Geekeey.Arcade.NET.Tests.Shared; namespace Geekeey.Arcade.NET.Tests; @@ -20,10 +21,9 @@ internal sealed class SdkNuGetTests var command = Command.WithWorkingDirectory(path) .WithThrowOnExit() .WithEnvironment("DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER", "1"); - await command.RunAsync("dotnet", "pack", Path.Combine("src", "sdk", "Sdk.slnf")); + await command.RunAsync("dotnet", "pack", Path.Combine("src", "sdk", "Sdk.slnx")); - var search = await command.RunAsync("dotnet", "package", "search", "--format=json", "--source", package, - "Geekeey.Arcade.NET.Sdk"); + var search = await command.RunAsync("dotnet", "package", "search", "--format=json", "--source", package, "Geekeey.Arcade.NET.Sdk"); var result = JsonSerializer.Deserialize(search.StdOut) ?? throw new InvalidOperationException("The package search response was empty."); @@ -50,25 +50,6 @@ internal sealed class SdkNuGetTests await Assert.That(project.File("bin", "Debug", "net10.0", "project.dll")).Exists(); } - [Test] - public async Task TestSdkWritesResultsToArtifactsDirectory() - { - // Arrange - using var project = await CreateProjectFromTemplate("Geekeey.Arcade.NET.Sdk.Test", "test"); - var artifacts = project.Directory("artifacts"); - var build = await project.RunAsync("dotnet", "build", $"-p:ArtifactsPath={artifacts.FullName}"); - await Assert.That(build.ExitCode).IsZero(); - - // Act - var test = await project.RunAsync("dotnet", project.File("artifacts", "bin", "project", "debug", "project.dll").FullName); - - // Assert - await Assert.That(test.ExitCode).IsZero(); - await Assert.That(artifacts.GetFiles("*-report.html", SearchOption.AllDirectories)).IsNotEmpty(); - await Assert.That(artifacts.GetFiles("*-tunit-report.json", SearchOption.AllDirectories)).IsNotEmpty(); - await Assert.That(project.Directory("TestResults").Exists).IsFalse(); - } - [Test] [Arguments("Geekeey.Arcade.NET.Sdk", "base")] [Arguments("Geekeey.Arcade.NET.Sdk.Razor", "razor")] diff --git a/src/sdk.tests/_shared/Command.cs b/src/sdk.tests/Shared/Command.cs similarity index 97% rename from src/sdk.tests/_shared/Command.cs rename to src/sdk.tests/Shared/Command.cs index ae84afc..a14b2ed 100644 --- a/src/sdk.tests/_shared/Command.cs +++ b/src/sdk.tests/Shared/Command.cs @@ -3,7 +3,7 @@ using System.Diagnostics; -namespace Geekeey.Arcade.NET.Tests; +namespace Geekeey.Arcade.NET.Tests.Shared; internal sealed record Command(string WorkingDirectory, IEnumerable> Environment) { diff --git a/src/sdk.tests/_shared/CommandOutput.cs b/src/sdk.tests/Shared/CommandOutput.cs similarity index 78% rename from src/sdk.tests/_shared/CommandOutput.cs rename to src/sdk.tests/Shared/CommandOutput.cs index 3ba2910..157733d 100644 --- a/src/sdk.tests/_shared/CommandOutput.cs +++ b/src/sdk.tests/Shared/CommandOutput.cs @@ -1,6 +1,6 @@ // Copyright (c) The Geekeey Authors // SPDX-License-Identifier: EUPL-1.2 -namespace Geekeey.Arcade.NET.Tests; +namespace Geekeey.Arcade.NET.Tests.Shared; internal sealed record CommandOutput(string StdOut, string StdErr, int ExitCode); diff --git a/src/sdk.tests/_shared/Project.cs b/src/sdk.tests/Shared/Project.cs similarity index 97% rename from src/sdk.tests/_shared/Project.cs rename to src/sdk.tests/Shared/Project.cs index 7fb3edb..eee1ec6 100644 --- a/src/sdk.tests/_shared/Project.cs +++ b/src/sdk.tests/Shared/Project.cs @@ -1,7 +1,7 @@ // Copyright (c) The Geekeey Authors // SPDX-License-Identifier: EUPL-1.2 -namespace Geekeey.Arcade.NET.Tests; +namespace Geekeey.Arcade.NET.Tests.Shared; internal sealed class Project : IDisposable { diff --git a/src/sdk.tests/fixtures/test/project.csproj b/src/sdk.tests/fixtures/test/project.csproj index 7c47748..7e4f26d 100644 --- a/src/sdk.tests/fixtures/test/project.csproj +++ b/src/sdk.tests/fixtures/test/project.csproj @@ -6,6 +6,6 @@ IDE0055 - + diff --git a/src/sdk.tests/testconfig.json b/src/sdk.tests/testconfig.json new file mode 100644 index 0000000..2b97a3f --- /dev/null +++ b/src/sdk.tests/testconfig.json @@ -0,0 +1,5 @@ +{ + "platformOptions": { + "resultDirectory": "../../artifacts/log" + } +} diff --git a/src/sdk/Sdk.slnf b/src/sdk/Sdk.slnf deleted file mode 100644 index a8bb8ff..0000000 --- a/src/sdk/Sdk.slnf +++ /dev/null @@ -1,11 +0,0 @@ -{ - "solution": { - "path": "../../arcade.slnx", - "projects": [ - "src/sdk/Sdk/Geekeey.Arcade.NET.Sdk/Geekeey.Arcade.NET.Sdk.csproj", - "src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Razor/Geekeey.Arcade.NET.Sdk.Razor.csproj", - "src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Geekeey.Arcade.NET.Sdk.Test.csproj", - "src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Web/Geekeey.Arcade.NET.Sdk.Web.csproj" - ] - } -} diff --git a/src/sdk/Sdk.slnx b/src/sdk/Sdk.slnx new file mode 100644 index 0000000..b545fea --- /dev/null +++ b/src/sdk/Sdk.slnx @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Geekeey.Arcade.NET.Sdk.Test.csproj b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Geekeey.Arcade.NET.Sdk.Test.csproj index 331bdd6..ef2326b 100644 --- a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Geekeey.Arcade.NET.Sdk.Test.csproj +++ b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Geekeey.Arcade.NET.Sdk.Test.csproj @@ -6,9 +6,6 @@ true false true - - false MSBuild SDK for test projects with standardized build, analyzer, and editor configuration defaults. @@ -23,8 +20,5 @@ - - - diff --git a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.props b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.props index 424b3f8..7c6b9dd 100644 --- a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.props +++ b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.props @@ -14,6 +14,4 @@ - - diff --git a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.targets b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.targets index 2dc83c8..c34d867 100644 --- a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.targets +++ b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/Sdk.targets @@ -1,5 +1,3 @@ - - diff --git a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.cs b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.cs deleted file mode 100644 index e44ef9a..0000000 --- a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) The Geekeey Authors -// SPDX-License-Identifier: EUPL-1.2 -// -// This file is generated into the test project by Geekeey.Arcade.NET.Sdk.Test. -// - -#nullable enable -#pragma warning disable TPEXP - -using Microsoft.Testing.Platform.Builder; -using Microsoft.Testing.Platform.CommandLine; -using Microsoft.Testing.Platform.Configurations; - -namespace Geekeey.Arcade.NET.Sdk.Test; - -public static class TestingPlatformExtensions -{ - public static void AddExtensions(ITestApplicationBuilder builder, string[] arguments) - { - builder.Configuration.AddConfigurationSource(() => new ResultDirectoryConfigurationSource()); - } - - public static class TestingPlatformBuilderHook - { - public static void AddExtensions(ITestApplicationBuilder builder, string[] arguments) - => TestingPlatformExtensions.AddExtensions(builder, arguments); - } - - private sealed class ResultDirectoryConfigurationSource : IConfigurationSource - { - public string Uid => "Geekeey.Arcade.NET.Sdk.Test.TestingPlatformExtensions"; - public string Version => "1.0.0"; - public string DisplayName => "Geekeey Arcade Testing Platform extensions"; - public string Description => "Uses the artifacts directory for test results by default."; - - public Task IsEnabledAsync() => Task.FromResult(true); - - public int Order => 4; - - public Task BuildAsync(CommandLineParseResult commandLineParseResult) - => Task.FromResult(new ResultDirectoryConfigurationProvider()); - } - - private sealed class ResultDirectoryConfigurationProvider : IConfigurationProvider - { - public Task LoadAsync() => Task.CompletedTask; - - public bool TryGet(string key, out string? value) - { - if (string.Equals(key, "platformOptions:resultDirectory", StringComparison.OrdinalIgnoreCase)) - { - value = @"__ARTIFACTS_PATH__"; - return true; - } - - value = null; - return false; - } - } -} diff --git a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.props b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.props deleted file mode 100644 index 506ddc2..0000000 --- a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - - Geekeey Arcade Testing Platform extensions - Geekeey.Arcade.NET.Sdk.Test.TestingPlatformExtensions.TestingPlatformBuilderHook - - - diff --git a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.targets b/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.targets deleted file mode 100644 index b864b93..0000000 --- a/src/sdk/Sdk/Geekeey.Arcade.NET.Sdk.Test/extensions/TestingPlatformExtensions.targets +++ /dev/null @@ -1,31 +0,0 @@ - - - <_ArcadeTestingPlatformExtensionsSourcePath>$(MSBuildThisFileDirectory)../common/source/TestingPlatformExtensions.cs - <_ArcadeTestingPlatformExtensionsGeneratedPath>$(IntermediateOutputPath)TestingPlatformExtensions.g.cs - - - - - - - - <_ArcadeTestingPlatformExtensionsSourceLineWithPath Include="@(_ArcadeTestingPlatformExtensionsSourceLine->Replace('__ARTIFACTS_PATH__', '$(ArtifactsPath)'))" /> - - - - - - - - - - -