support for dotnet9 compilation
All checks were successful
.NET Test / test (push) Successful in 2m2s
All checks were successful
.NET Test / test (push) Successful in 2m2s
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user