support for dotnet9 compilation
All checks were successful
.NET Test / test (push) Successful in 2m2s

This commit is contained in:
2025-07-29 23:22:28 +04:00
parent dd81fecdd6
commit 595b63dc23
7 changed files with 27 additions and 19 deletions

View File

@@ -16,7 +16,7 @@ jobs:
- name: Setup .NET - name: Setup .NET
uses: https://github.com/actions/setup-dotnet@v3 uses: https://github.com/actions/setup-dotnet@v3
with: with:
dotnet-version: 8.x dotnet-version: 9.x
- name: Restore dependencies - name: Restore dependencies
run: dotnet restore Railway/Railway.csproj run: dotnet restore Railway/Railway.csproj

View File

@@ -21,7 +21,7 @@ jobs:
- name: Setup .NET - name: Setup .NET
uses: https://github.com/actions/setup-dotnet@v3 uses: https://github.com/actions/setup-dotnet@v3
with: with:
dotnet-version: 8.x dotnet-version: 9.x
- name: Restore dependencies - name: Restore dependencies
run: dotnet restore run: dotnet restore
@@ -30,12 +30,12 @@ jobs:
run: dotnet build --no-restore run: dotnet build --no-restore
- name: Test - name: Test
run: dotnet test --no-build --verbosity normal --logger trx --results-directory "TestResults-8.x" run: dotnet test --no-build --verbosity normal --logger trx --results-directory "TestResults-9.x"
- name: Upload dotnet test results - name: Upload dotnet test results
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: dotnet-results-8.x name: dotnet-results-9.x
path: TestResults-8.x path: TestResults-9.x
if: ${{ always() }} if: ${{ always() }}
retention-days: 30 retention-days: 30

View File

@@ -1,4 +1,4 @@
Copyright (c) 2023-2024 JustFixMe Copyright (c) 2023-2025 JustFixMe
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -221,15 +221,22 @@ public sealed class ExceptionalError : Error
private static ImmutableDictionary<string, string> ExtractExtensionData(Exception exception) private static ImmutableDictionary<string, string> ExtractExtensionData(Exception exception)
{ {
if (!(exception.Data?.Count > 0)) if (!(exception.Data?.Count > 0))
return ImmutableDictionary<string, string>.Empty; return ImmutableDictionary<string, string>.Empty;
var values = GetGenericExtData(exception);
return values is not null ? values.ToImmutable() : ImmutableDictionary<string, string>.Empty;
}
private static ImmutableDictionary<string, string>.Builder? GetGenericExtData(Exception ex)
{
ImmutableDictionary<string, string>.Builder? values = null; ImmutableDictionary<string, string>.Builder? values = null;
foreach (var key in exception.Data.Keys) foreach (var key in ex.Data.Keys)
{ {
if (key is null) continue; if (key is null) continue;
var value = exception.Data[key]; var value = ex.Data[key];
if (value is null) continue; if (value is null) continue;
var keyString = key.ToString(); var keyString = key.ToString();
@@ -239,7 +246,8 @@ public sealed class ExceptionalError : Error
values ??= ImmutableDictionary.CreateBuilder<string, string>(); values ??= ImmutableDictionary.CreateBuilder<string, string>();
values.Add(keyString, valueString); values.Add(keyString, valueString);
} }
return values is not null ? values.ToImmutable() : ImmutableDictionary<string, string>.Empty;
return values;
} }
} }

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks> <TargetFrameworks>net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
<LangVersion>10.0</LangVersion> <LangVersion>10.0</LangVersion>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>

View File

@@ -5,7 +5,7 @@ namespace Just.Railway;
public static partial class ResultExtensions public static partial class ResultExtensions
{ {
#region Match (with fallback) #region Match (with fallback)
public static T Match<T>(this in Result<T> result, Func<Error, T> fallback) public static T Match<T>(this in Result<T> result, Func<Error, T> fallback)
{ {
return result.State switch return result.State switch
@@ -15,7 +15,7 @@ public static partial class ResultExtensions
_ => throw new ResultNotInitializedException(nameof(result)) _ => throw new ResultNotInitializedException(nameof(result))
}; };
} }
public static async Task<T> Match<T>(this Result<T> result, Func<Error, Task<T>> fallback) public static async Task<T> Match<T>(this Result<T> result, Func<Error, Task<T>> fallback)
{ {
return result.State switch return result.State switch
@@ -77,7 +77,7 @@ public static partial class ResultExtensions
} }
#endregion #endregion
#region Merge #region Merge
public static Result Merge(this IEnumerable<Result> results) public static Result Merge(this IEnumerable<Result> results)

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
@@ -11,13 +11,13 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageReference Include="xunit" Version="2.6.1" /> <PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"> <PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0"> <PackageReference Include="coverlet.collector" Version="6.0.4">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>