Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
"version": "2025.2.0",
"version": "2025.2.1",
"commands": [
"jb"
],
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/Steeltoe.All.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ jobs:
8.0.*
9.0.*

- name: Setup .NET 10 (preview)
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.*
dotnet-quality: preview

- name: Turn off dev certificate (macOS only)
if: ${{ matrix.os == 'macos-latest' }}
# Setting DOTNET_GENERATE_ASPNET_CERTIFICATE to "false" makes it easier to determine which test failed on macOS when it tried to start a web server with https enabled.
Expand Down Expand Up @@ -106,6 +112,12 @@ jobs:
- name: Test (net9.0) (memory dumps)
run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 --filter "${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }}" ${{ env.COMMON_TEST_ARGS }}

- name: Test (net10.0)
run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 --filter "${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }}" ${{ env.COMMON_TEST_ARGS }}

- name: Test (net10.0) (memory dumps)
run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 --filter "${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }}" ${{ env.COMMON_TEST_ARGS }}

- name: Upload crash/hang dumps (on failure)
if: ${{ failure() }}
uses: actions/upload-artifact@v4
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/component-shared-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@ jobs:
8.0.*
9.0.*

- name: Setup .NET 10 (preview)
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.*
dotnet-quality: preview

- name: Turn off dev certificate (macOS only)
if: ${{ inputs.OS == 'macos' }}
# Setting DOTNET_GENERATE_ASPNET_CERTIFICATE to "false" makes it easier to determine which test failed on macOS when it tried to start a web server with https enabled.
Expand Down Expand Up @@ -99,6 +105,13 @@ jobs:
if: ${{ inputs.component == 'Management' }}
run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 ${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }}

- name: Test (net10.0)
run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 ${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }}

- name: Test (net10.0) (memory dumps)
if: ${{ inputs.component == 'Management' }}
run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 ${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }}

- name: Upload crash/hang dumps (on failure)
if: ${{ failure() }}
uses: actions/upload-artifact@v4
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ jobs:
8.0.*
9.0.*

- name: Setup .NET 10 (preview)
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.*
dotnet-quality: preview

- name: Git checkout
uses: actions/checkout@v4
with:
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/scan-vulnerable-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ jobs:
8.0.*
9.0.*

- name: Setup .NET 10 (preview)
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.*
dotnet-quality: preview

- name: Git checkout
uses: actions/checkout@v4
with:
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/sonarcube.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ jobs:
8.0.*
9.0.*

- name: Setup .NET 10 (preview)
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.*
dotnet-quality: preview

- name: Install Sonar .NET Scanner
run: dotnet tool install --global dotnet-sonarscanner

Expand Down Expand Up @@ -90,6 +96,12 @@ jobs:
- name: Test (net9.0) (memory dumps)
run: dotnet test ${{ env.SOLUTION_FILE }} --filter "Category=MemoryDumps" --framework net9.0 ${{ env.SONAR_TEST_ARGS }}

- name: Test (net10.0)
run: dotnet test ${{ env.SOLUTION_FILE }} --filter "Category!=MemoryDumps" --framework net10.0 ${{ env.SONAR_TEST_ARGS }}

- name: Test (net10.0) (memory dumps)
run: dotnet test ${{ env.SOLUTION_FILE }} --filter "Category=MemoryDumps" --framework net10.0 ${{ env.SONAR_TEST_ARGS }}

- name: End Sonar .NET scanner
if: ${{ !cancelled() && steps.sonar_begin.outcome == 'success' }}
env:
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/verify-code-style.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ jobs:
8.0.*
9.0.*

- name: Setup .NET 10 (preview)
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.*
dotnet-quality: preview

- name: Git checkout
uses: actions/checkout@v4
with:
Expand Down
7 changes: 7 additions & 0 deletions shared-test.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@
<NoWarn>$(NoWarn);S2094;S3717;SA1602;CA1062;CA1707;NU5104</NoWarn>
</PropertyGroup>

<!-- .NET 10 Preview -->
<PropertyGroup>
<!-- ASPDEPR004: 'WebHostBuilder' is deprecated in favor of HostBuilder and WebApplicationBuilder. -->
<!-- ASPDEPR008: 'IWebHost' is obsolete: Use IHost instead. -->
<NoWarn>$(NoWarn);ASPDEPR004;ASPDEPR008</NoWarn>
</PropertyGroup>

<PropertyGroup>
<!-- https://github.com/xunit/xunit/issues/3238#issuecomment-2770720936 -->
<TestTfmsInParallel>false</TestTfmsInParallel>
Expand Down
7 changes: 7 additions & 0 deletions shared.props
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>

<!-- .NET 10 Preview -->
<PropertyGroup>
<LangVersion>preview</LangVersion>
<!-- CA1873: Evaluation of this argument may be expensive and unnecessary if logging is disabled -->
<NoWarn>$(NoWarn);CA1873</NoWarn>
</PropertyGroup>

<PropertyGroup>
<!--
Disabled IDE analyzers for "Remove unused member" (IDE0051, IDE0052) because they currently don't "see" code added
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand All @@ -11,7 +11,7 @@
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="$(MatchTargetFrameworkVersion)" />
<PackageReference Include="MongoDB.Driver" Version="$(MongoDbDriverVersion)" />
<PackageReference Include="MySqlConnector" Version="$(MySqlConnectorVersion)" />
<PackageReference Include="Npgsql" Version="$(EntityFrameworkCoreTestVersion)" />
<PackageReference Include="Npgsql" Version="$(NpgsqlTestVersion)" />
<PackageReference Include="RabbitMQ.Client" Version="$(RabbitClientTestVersion)" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
2 changes: 1 addition & 1 deletion src/Common/test/Common.Test/Steeltoe.Common.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
2 changes: 1 addition & 1 deletion src/Common/test/Http.Test/Steeltoe.Common.Http.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
2 changes: 1 addition & 1 deletion src/Common/test/Net.Test/Steeltoe.Common.Net.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
2 changes: 2 additions & 0 deletions src/Common/test/TestResources/HostWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.Hosting;

#pragma warning disable ASPDEPR008 // 'IWebHost' is obsolete: Use IHost instead.

namespace Steeltoe.Common.TestResources;

public sealed class HostWrapper : IAsyncDisposable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>

Expand Down
2 changes: 2 additions & 0 deletions src/Common/test/TestResources/TestWebHostBuilderFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;

#pragma warning disable ASPDEPR004 // 'WebHostBuilder' is deprecated in favor of HostBuilder and WebApplicationBuilder.

namespace Steeltoe.Common.TestResources;

public static class TestWebHostBuilderFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,14 @@ public void Set(string key, string? value)

LogSet(GetType().Name, key, value);

#pragma warning disable IDE0031 // Use null propagation
// ReSharper disable once UseNullPropagation
// Justification: Triggers warning in Sonar, which doesn't support .NET 10 yet.
if (ConfigurationRoot != null)
{
ConfigurationRoot[key] = value;
}
#pragma warning restore IDE0031 // Use null propagation
}

public void Dispose()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace Steeltoe.Configuration.SpringBoot;
internal sealed class SpringBootEnvironmentVariableProvider : JsonStreamConfigurationProvider
{
private const string SpringApplicationJson = "SPRING_APPLICATION_JSON";
private static readonly bool IsAtLeastDotNet10 = typeof(JsonStreamConfigurationProvider).Assembly.GetName().Version?.Major >= 10;
private readonly string? _springApplicationJson;
private bool _loaded;

Expand Down Expand Up @@ -61,7 +62,8 @@ public override void Load()
{
string? value = Data[key];

if (value != null)
// Breaking change in JsonConfigurationFileParser at https://github.com/dotnet/runtime/pull/116677.
if (IsAtLeastDotNet10 || value != null)
{
string newKey = key.Contains('.') ? key.Replace('.', ':') : key;
data[newKey] = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Steeltoe.Common.TestResources;
using IPNetwork = Microsoft.AspNetCore.HttpOverrides.IPNetwork;
using IPNetwork =
#if NET10_0_OR_GREATER
System.Net.IPNetwork;

#else
Microsoft.AspNetCore.HttpOverrides.IPNetwork;

#endif

namespace Steeltoe.Configuration.CloudFoundry.Test;

Expand Down Expand Up @@ -244,14 +251,22 @@ public async Task ForwardedHeadersOptions_unrestricted_when_running_on_CloudFoun
{
options.ForwardedHeaders.Should().HaveFlag(ForwardedHeaders.XForwardedFor);
options.ForwardedHeaders.Should().HaveFlag(ForwardedHeaders.XForwardedProto);
#if NET10_0_OR_GREATER
options.KnownIPNetworks.Should().BeEmpty();
#else
options.KnownNetworks.Should().BeEmpty();
#endif
options.KnownProxies.Should().BeEmpty();
}
else
{
options.ForwardedHeaders.Should().NotHaveFlag(ForwardedHeaders.XForwardedFor);
options.ForwardedHeaders.Should().NotHaveFlag(ForwardedHeaders.XForwardedProto);
#if NET10_0_OR_GREATER
options.KnownIPNetworks.Should().ContainSingle().Which.Should().BeEquivalentTo(IPNetwork.Parse("127.0.0.1/8"));
#else
options.KnownNetworks.Should().ContainSingle().Which.Should().BeEquivalentTo(IPNetwork.Parse("127.0.0.1/8"));
#endif
options.KnownProxies.Should().ContainSingle().Which.Should().Be(IPAddress.Parse("::1"));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<Import Project="..\..\..\..\shared.props" />
Expand Down
Loading
Loading