diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 736b34acae..0763ef1c5b 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "jetbrains.resharper.globaltools": { - "version": "2025.3.0", + "version": "2025.3.0.3", "commands": [ "jb" ], diff --git a/.github/workflows/Steeltoe.All.yml b/.github/workflows/Steeltoe.All.yml index b42e9bf4ad..d4b5897ca1 100644 --- a/.github/workflows/Steeltoe.All.yml +++ b/.github/workflows/Steeltoe.All.yml @@ -38,7 +38,7 @@ jobs: - os: windows-latest skipFilter: Category!=Integration - os: macos-latest - skipFilter: Category!=Integration&Category!=SkipOnMacOS + skipFilter: Category!=Integration runs-on: ${{ matrix.os }} continue-on-error: true @@ -74,12 +74,12 @@ jobs: # When that happens, select 'Always Allow' to grant 'dotnet' access to the certificate key in the future. # and the test run fails, but without indicating which test caused it. By setting this, the causing test fails with the next message: # Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date. - # To prevent the causing test from failing the test run, disable it on macOS by adding [Trait("Category", "SkipOnMacOS")]. + # To prevent the causing test from failing the test run, disable it on macOS using FactSkippedOnPlatform/TheorySkippedOnPlatform. shell: bash run: echo "DOTNET_GENERATE_ASPNET_CERTIFICATE=false" >> $GITHUB_ENV - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false @@ -115,7 +115,7 @@ jobs: - name: Upload crash/hang dumps (on failure) if: ${{ failure() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: FailedTestOutput-${{ matrix.os }} path: | diff --git a/.github/workflows/component-configuration.yml b/.github/workflows/component-configuration.yml index 3f6cc30272..3c32b2dd5e 100644 --- a/.github/workflows/component-configuration.yml +++ b/.github/workflows/component-configuration.yml @@ -25,4 +25,4 @@ jobs: with: component: Configuration OS: ubuntu - runConfigServer: true + runDockerContainers: true diff --git a/.github/workflows/component-management.yml b/.github/workflows/component-management.yml index da124fbeea..b1e13119c1 100644 --- a/.github/workflows/component-management.yml +++ b/.github/workflows/component-management.yml @@ -31,7 +31,6 @@ jobs: with: component: Management OS: macos - skipFilter: Category!=SkipOnMacOS windows: uses: ./.github/workflows/component-shared-workflow.yml diff --git a/.github/workflows/component-shared-workflow.yml b/.github/workflows/component-shared-workflow.yml index b958b3b509..229e2f5801 100644 --- a/.github/workflows/component-shared-workflow.yml +++ b/.github/workflows/component-shared-workflow.yml @@ -9,10 +9,7 @@ on: OS: required: true type: string - skipFilter: - required: false - type: string - runConfigServer: + runDockerContainers: required: false type: boolean default: false @@ -24,14 +21,10 @@ permissions: env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_NOLOGO: true - SOLUTION_FILE: src/Steeltoe.${{ inputs.component }}.slnf + SOLUTION_FILE: 'src/Steeltoe.${{ inputs.component }}.slnf' COMMON_TEST_ARGS: >- --no-build --configuration Release --collect "XPlat Code Coverage" --logger trx --results-directory ${{ github.workspace }}/dumps --settings coverlet.runsettings --blame-crash --blame-hang-timeout 3m - SKIP_FILTER_NO_MEMORY_DUMPS: >- - ${{ inputs.skipFilter && format('--filter "{0}&Category!=MemoryDumps"', inputs.skipFilter) || '--filter "Category!=MemoryDumps"' }} - SKIP_FILTER_WITH_MEMORY_DUMPS: >- - ${{ inputs.skipFilter && format('--filter "{0}&Category=MemoryDumps"', inputs.skipFilter) || '--filter "Category=MemoryDumps"' }} jobs: build: @@ -41,11 +34,11 @@ jobs: services: eurekaServer: - image: ${{ inputs.runConfigServer && 'steeltoe.azurecr.io/eureka-server' || null }} + image: ${{ inputs.runDockerContainers && 'steeltoe.azurecr.io/eureka-server' || null }} ports: - 8761:8761 configServer: - image: ${{ inputs.runConfigServer && 'steeltoe.azurecr.io/config-server' || null }} + image: ${{ inputs.runDockerContainers && 'steeltoe.azurecr.io/config-server' || null }} env: eureka.client.enabled: true eureka.client.serviceUrl.defaultZone: http://eurekaServer:8761/eureka @@ -71,12 +64,12 @@ jobs: # When that happens, select 'Always Allow' to grant 'dotnet' access to the certificate key in the future. # and the test run fails, but without indicating which test caused it. By setting this, the causing test fails with the next message: # Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date. - # To prevent the causing test from failing the test run, disable it on macOS by adding [Trait("Category", "SkipOnMacOS")]. + # To prevent the causing test from failing the test run, disable it on macOS using FactSkippedOnPlatform/TheorySkippedOnPlatform. shell: bash run: echo "DOTNET_GENERATE_ASPNET_CERTIFICATE=false" >> $GITHUB_ENV - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false @@ -87,32 +80,31 @@ jobs: run: dotnet build ${{ env.SOLUTION_FILE }} --no-restore --configuration Release --verbosity minimal - name: Test (net10.0) - run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 ${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 --filter "Category!=MemoryDumps" ${{ 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 }} + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 --filter "Category=MemoryDumps" ${{ env.COMMON_TEST_ARGS }} - name: Test (net9.0) - run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 ${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 --filter "Category!=MemoryDumps" ${{ env.COMMON_TEST_ARGS }} - name: Test (net9.0) (memory dumps) if: ${{ inputs.component == 'Management' }} - run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 ${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 --filter "Category=MemoryDumps" ${{ env.COMMON_TEST_ARGS }} - name: Test (net8.0) - run: dotnet test ${{ env.SOLUTION_FILE }} --framework net8.0 ${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net8.0 --filter "Category!=MemoryDumps" ${{ env.COMMON_TEST_ARGS }} - name: Test (net8.0) (memory dumps) if: ${{ inputs.component == 'Management' }} - run: dotnet test ${{ env.SOLUTION_FILE }} --framework net8.0 ${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} - + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net8.0 --filter "Category=MemoryDumps" ${{ env.COMMON_TEST_ARGS }} - name: Upload crash/hang dumps (on failure) if: ${{ failure() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: - name: FailedTestOutput-${{ inputs.OS }} + name: FailedTestOutput-${{ inputs.OS }}-latest path: | ${{ github.workspace }}/dumps/**/*.dmp ${{ github.workspace }}/dumps/**/Sequence_*.xml @@ -122,7 +114,7 @@ jobs: if: ${{ !cancelled() }} uses: dorny/test-reporter@v2 with: - name: ${{ inputs.OS }} test results + name: ${{ inputs.OS }}-latest test results reporter: dotnet-trx path: '**/*.trx' fail-on-empty: 'true' diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 0ada5b694f..46b1dbab50 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -40,7 +40,7 @@ jobs: 10.0.* - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false @@ -123,7 +123,7 @@ jobs: run: dotnet pack ${{ env.SOLUTION_FILE }} --no-build --configuration Release --output ${{ github.workspace }}/packages /p:VersionSuffix=${{ env.PACKAGE_VERSION_SUFFIX }} - name: Upload unsigned packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: if-no-files-found: error name: unsigned-packages @@ -174,7 +174,7 @@ jobs: --description-url 'https://steeltoe.io/' - name: Upload signed packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: if-no-files-found: error name: signed-packages @@ -263,7 +263,7 @@ jobs: steps: - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: true diff --git a/.github/workflows/scan-vulnerable-dependencies.yml b/.github/workflows/scan-vulnerable-dependencies.yml index 473ff0bc07..221643a3ff 100644 --- a/.github/workflows/scan-vulnerable-dependencies.yml +++ b/.github/workflows/scan-vulnerable-dependencies.yml @@ -36,7 +36,7 @@ jobs: 10.0.* - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false diff --git a/.github/workflows/sonarcube.yml b/.github/workflows/sonarcube.yml index a9498051e0..2fcebd9f8a 100644 --- a/.github/workflows/sonarcube.yml +++ b/.github/workflows/sonarcube.yml @@ -59,7 +59,7 @@ jobs: run: dotnet tool install --global dotnet-sonarscanner - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false # Sonar: Shallow clones should be disabled for a better relevancy of analysis. diff --git a/.github/workflows/verify-code-style.yml b/.github/workflows/verify-code-style.yml index 04df341bfd..ca649bdfd5 100644 --- a/.github/workflows/verify-code-style.yml +++ b/.github/workflows/verify-code-style.yml @@ -35,7 +35,7 @@ jobs: 10.0.* - name: Git checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false fetch-depth: 2 @@ -44,7 +44,10 @@ jobs: run: dotnet tool restore --verbosity minimal - name: Restore packages - run: dotnet restore ${{ env.SOLUTION_FILE }} /p:Configuration=Release --verbosity minimal + run: dotnet restore ${{ env.SOLUTION_FILE }} /p:Configuration=Release /p:NuGetAudit=false --verbosity minimal + + - name: Build + run: dotnet build ${{ env.SOLUTION_FILE }} --no-restore --configuration Release /p:RunAnalyzers=false - name: CleanupCode (on PR diff) if: ${{ github.event_name == 'pull_request' }} @@ -56,11 +59,13 @@ jobs: $baseCommitHash = git rev-parse HEAD~1 Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash in pull request." - dotnet regitlint -s ${{ env.SOLUTION_FILE }} --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff + dotnet jb cleanupcode --version + dotnet regitlint -s $env:SOLUTION_FILE --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --no-updates --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff - name: CleanupCode (on branch) - if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'release' }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} shell: pwsh run: | - Write-Output "Running code cleanup on all files." - dotnet regitlint -s ${{ env.SOLUTION_FILE }} --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN --fail-on-diff --print-diff + Write-Output 'Running code cleanup on all files.' + dotnet jb cleanupcode --version + dotnet regitlint -s $env:SOLUTION_FILE --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --no-updates --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN --fail-on-diff --print-diff diff --git a/cleanupcode.ps1 b/cleanupcode.ps1 index 4f36c58367..1c5043ff19 100644 --- a/cleanupcode.ps1 +++ b/cleanupcode.ps1 @@ -1,4 +1,4 @@ -#Requires -Version 7.0 +#Requires -Version 7.4 # This script reformats (part of) the codebase to make it compliant with our coding guidelines. @@ -7,38 +7,31 @@ param( [string] $revision ) -function VerifySuccessExitCode { - if ($LastExitCode -ne 0) { - throw "Command failed with exit code $LastExitCode." - } -} +$ErrorActionPreference = "Stop" +$PSNativeCommandUseErrorActionPreference = $true +$solutionFile = 'src/Steeltoe.All.sln' dotnet tool restore -VerifySuccessExitCode - -dotnet restore src -VerifySuccessExitCode +dotnet restore $solutionFile /p:NuGetAudit=false +dotnet build $solutionFile --no-restore --configuration Release /p:RunAnalyzers=false if ($revision) { $headCommitHash = git rev-parse HEAD - VerifySuccessExitCode - $baseCommitHash = git rev-parse $revision - VerifySuccessExitCode if ($baseCommitHash -eq $headCommitHash) { Write-Output "Running code cleanup on staged/unstaged files." - dotnet regitlint -s src/Steeltoe.All.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --properties:Configuration=Release --jb --properties:NuGetAudit=false --jb --verbosity=WARN -f staged,modified - VerifySuccessExitCode + dotnet jb cleanupcode --version + dotnet regitlint -s $solutionFile --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --no-updates --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN -f staged,modified } else { Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash, including staged/unstaged files." - dotnet regitlint -s src/Steeltoe.All.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --properties:Configuration=Release --jb --properties:NuGetAudit=false --jb --verbosity=WARN -f staged,modified,commits -a $headCommitHash -b $baseCommitHash - VerifySuccessExitCode + dotnet jb cleanupcode --version + dotnet regitlint -s $solutionFile --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --no-updates --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN -f staged,modified,commits -a $headCommitHash -b $baseCommitHash } } else { Write-Output "Running code cleanup on all files." - dotnet regitlint -s src/Steeltoe.All.sln --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --properties:Configuration=Release --jb --properties:NuGetAudit=false --jb --verbosity=WARN - VerifySuccessExitCode + dotnet jb cleanupcode --version + dotnet regitlint -s $solutionFile --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="Steeltoe Full Cleanup" --jb --no-updates --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --properties:NuGetAudit=false --jb --verbosity=WARN } diff --git a/shared-project.props b/shared-project.props index 2dfa2fa8de..bd037efa28 100644 --- a/shared-project.props +++ b/shared-project.props @@ -4,5 +4,6 @@ false - + diff --git a/shared-test.props b/shared-test.props index 070739758d..16dad857a8 100644 --- a/shared-test.props +++ b/shared-test.props @@ -11,7 +11,8 @@ - + diff --git a/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs b/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs index 876c1566a6..a2a64797d2 100644 --- a/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs +++ b/src/Common/test/Certificates.Test/ConfigureCertificateOptionsTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text.Json; @@ -50,10 +51,9 @@ public void ConfigureCertificateOptions_BadPath_NoCertificate(string certificate options.Certificate.Should().BeNull(); } - [Theory] + [TheorySkippedOnPlatform(nameof(OSPlatform.OSX))] [InlineData("")] [InlineData(CertificateName)] - [Trait("Category", "SkipOnMacOS")] public void ConfigureCertificateOptions_ThrowsOnEmptyFile(string certificateName) { var appSettings = new Dictionary diff --git a/src/Common/test/TestResources/FactSkippedOnPlatformAttribute.cs b/src/Common/test/TestResources/FactSkippedOnPlatformAttribute.cs new file mode 100644 index 0000000000..0e3efaba45 --- /dev/null +++ b/src/Common/test/TestResources/FactSkippedOnPlatformAttribute.cs @@ -0,0 +1,29 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System.Runtime.InteropServices; +using Xunit; +using Xunit.v3; + +namespace Steeltoe.Common.TestResources; + +/// +/// Skips running the decorated test on the specified platforms. +/// +/// +/// A common reason for skipping tests on macOS is because the ASP.NET dev certificate is not trusted. See +/// https://github.com/dotnet/aspnetcore/issues/42273. +/// +[XunitTestCaseDiscoverer(typeof(FactDiscoverer))] +[AttributeUsage(AttributeTargets.Method)] +public sealed class FactSkippedOnPlatformAttribute : FactAttribute +{ + public FactSkippedOnPlatformAttribute(params string[] platformNames) + { + foreach (OSPlatform platform in platformNames.Select(OSPlatform.Create)) + { + Assert.SkipWhen(RuntimeInformation.IsOSPlatform(platform), $"Skipping test on platform {platform}."); + } + } +} diff --git a/src/Common/test/TestResources/TheorySkippedOnPlatformAttribute.cs b/src/Common/test/TestResources/TheorySkippedOnPlatformAttribute.cs new file mode 100644 index 0000000000..c09160b5c4 --- /dev/null +++ b/src/Common/test/TestResources/TheorySkippedOnPlatformAttribute.cs @@ -0,0 +1,29 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System.Runtime.InteropServices; +using Xunit; +using Xunit.v3; + +namespace Steeltoe.Common.TestResources; + +/// +/// Skips running the decorated test on the specified platforms. +/// +/// +/// A common reason for skipping tests on macOS is because the ASP.NET dev certificate is not trusted. See +/// https://github.com/dotnet/aspnetcore/issues/42273. +/// +[XunitTestCaseDiscoverer(typeof(TheoryDiscoverer))] +[AttributeUsage(AttributeTargets.Method)] +public sealed class TheorySkippedOnPlatformAttribute : TheoryAttribute +{ + public TheorySkippedOnPlatformAttribute(params string[] platformNames) + { + foreach (OSPlatform platform in platformNames.Select(OSPlatform.Create)) + { + Assert.SkipWhen(RuntimeInformation.IsOSPlatform(platform), $"Skipping test on platform {platform}."); + } + } +} diff --git a/src/Discovery/test/Consul.Test/Discovery/PostConfigureConsulDiscoveryOptionsTest.cs b/src/Discovery/test/Consul.Test/Discovery/PostConfigureConsulDiscoveryOptionsTest.cs index a09e3c2f1e..8f468dc17f 100644 --- a/src/Discovery/test/Consul.Test/Discovery/PostConfigureConsulDiscoveryOptionsTest.cs +++ b/src/Discovery/test/Consul.Test/Discovery/PostConfigureConsulDiscoveryOptionsTest.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics; +using System.Runtime.InteropServices; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging.Abstractions; @@ -107,8 +108,7 @@ public async Task CanUseNetworkInterfaces() inetUtilsMock.Verify(n => n.FindFirstNonLoopbackHostInfo(), Times.Once); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task CanUseNetworkInterfacesWithoutReverseDnsOnIP() { var appSettings = new Dictionary @@ -137,7 +137,7 @@ public async Task CanUseNetworkInterfacesWithoutReverseDnsOnIP() noSlowReverseDnsQuery.Stop(); options.HostName.Should().NotBeNull(); - noSlowReverseDnsQuery.ElapsedMilliseconds.Should().BeInRange(0, 1500); // testing with an actual reverse dns query results in around 5000 ms + noSlowReverseDnsQuery.ElapsedMilliseconds.Should().BeInRange(0, 2000); // testing with an actual reverse dns query results in around 5000 ms } [Fact] diff --git a/src/Discovery/test/Eureka.Test/DynamicPortAssignmentTest.cs b/src/Discovery/test/Eureka.Test/DynamicPortAssignmentTest.cs index 3b0265f868..45f9666e17 100644 --- a/src/Discovery/test/Eureka.Test/DynamicPortAssignmentTest.cs +++ b/src/Discovery/test/Eureka.Test/DynamicPortAssignmentTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System.Runtime.InteropServices; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -11,8 +12,7 @@ namespace Steeltoe.Discovery.Eureka.Test; public sealed class DynamicPortAssignmentTest { - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task Applies_dynamically_assigned_ports_after_startup() { var appSettings = new Dictionary diff --git a/src/Discovery/test/Eureka.Test/EurekaServiceCollectionExtensionsTest.cs b/src/Discovery/test/Eureka.Test/EurekaServiceCollectionExtensionsTest.cs index d8c1453e14..6d22358713 100644 --- a/src/Discovery/test/Eureka.Test/EurekaServiceCollectionExtensionsTest.cs +++ b/src/Discovery/test/Eureka.Test/EurekaServiceCollectionExtensionsTest.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics; +using System.Runtime.InteropServices; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -55,8 +56,7 @@ public async Task AddEurekaDiscoveryClient_UsesManagementOptions() options.Value.StatusPageUrlPath.Should().Be("/actuator/info"); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AddEurekaDiscoveryClient_UsesServerTimeout() { var appSettings = new Dictionary diff --git a/src/Discovery/test/Eureka.Test/PostConfigureEurekaInstanceOptionsTest.cs b/src/Discovery/test/Eureka.Test/PostConfigureEurekaInstanceOptionsTest.cs index 9eebea8b55..6200afa727 100644 --- a/src/Discovery/test/Eureka.Test/PostConfigureEurekaInstanceOptionsTest.cs +++ b/src/Discovery/test/Eureka.Test/PostConfigureEurekaInstanceOptionsTest.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.Globalization; using System.Reflection; +using System.Runtime.InteropServices; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -217,8 +218,7 @@ public async Task Can_use_network_interfaces() instanceOptions.IPAddress.Should().Be("254.254.254.254"); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task Can_use_network_interfaces_without_reverse_DNS_on_IP() { var appSettings = new Dictionary diff --git a/src/Discovery/test/HttpClients.Test/DiscoveryWebApplicationBuilderExtensionsTest.cs b/src/Discovery/test/HttpClients.Test/DiscoveryWebApplicationBuilderExtensionsTest.cs index 5cd064130a..358958b738 100644 --- a/src/Discovery/test/HttpClients.Test/DiscoveryWebApplicationBuilderExtensionsTest.cs +++ b/src/Discovery/test/HttpClients.Test/DiscoveryWebApplicationBuilderExtensionsTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System.Runtime.InteropServices; using FluentAssertions.Extensions; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; @@ -61,8 +62,7 @@ public async Task AddConsulDiscoveryClient_WebApplicationBuilder_AddsServiceDisc host.Services.GetServices().OfType().Should().ContainSingle(); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AddEurekaDiscoveryClient_WorksWithGlobalServiceDiscovery() { WebApplicationBuilder builder = TestWebApplicationBuilderFactory.Create(); diff --git a/src/Management/test/Endpoint.Test/Actuators/HeapDump/HeapDumperTest.cs b/src/Management/test/Endpoint.Test/Actuators/HeapDump/HeapDumperTest.cs index c1cfe1045c..65b94240cf 100644 --- a/src/Management/test/Endpoint.Test/Actuators/HeapDump/HeapDumperTest.cs +++ b/src/Management/test/Endpoint.Test/Actuators/HeapDump/HeapDumperTest.cs @@ -10,11 +10,12 @@ namespace Steeltoe.Management.Endpoint.Test.Actuators.HeapDump; +[Collection("TestsForMemoryDumpsMustRunSequentially")] +[Trait("Category", "MemoryDumps")] public sealed class HeapDumperTest { private static readonly TimeSpan DumpTimeout = TimeSpan.FromMinutes(3); - [Trait("Category", "MemoryDumps")] [Theory] [InlineData(HeapDumpType.Full, "fulldump_", "full dump")] [InlineData(HeapDumpType.Heap, "heapdump_", "dump with heap")] diff --git a/src/Management/test/Endpoint.Test/Actuators/HttpExchanges/DiagnosticObserverHttpExchangeRecorderTest.cs b/src/Management/test/Endpoint.Test/Actuators/HttpExchanges/DiagnosticObserverHttpExchangeRecorderTest.cs index 2892b85934..54e765795f 100644 --- a/src/Management/test/Endpoint.Test/Actuators/HttpExchanges/DiagnosticObserverHttpExchangeRecorderTest.cs +++ b/src/Management/test/Endpoint.Test/Actuators/HttpExchanges/DiagnosticObserverHttpExchangeRecorderTest.cs @@ -17,6 +17,7 @@ namespace Steeltoe.Management.Endpoint.Test.Actuators.HttpExchanges; +[Collection("TestsForMemoryDumpsMustRunSequentially")] [Trait("Category", "MemoryDumps")] public sealed class DiagnosticObserverHttpExchangeRecorderTest { diff --git a/src/Management/test/Endpoint.Test/Actuators/ThreadDump/EventPipeThreadDumperTest.cs b/src/Management/test/Endpoint.Test/Actuators/ThreadDump/EventPipeThreadDumperTest.cs index 29f31200f3..3e46e42afd 100644 --- a/src/Management/test/Endpoint.Test/Actuators/ThreadDump/EventPipeThreadDumperTest.cs +++ b/src/Management/test/Endpoint.Test/Actuators/ThreadDump/EventPipeThreadDumperTest.cs @@ -8,9 +8,10 @@ namespace Steeltoe.Management.Endpoint.Test.Actuators.ThreadDump; +[Collection("TestsForMemoryDumpsMustRunSequentially")] +[Trait("Category", "MemoryDumps")] public sealed class EventPipeThreadDumperTest { - [Trait("Category", "MemoryDumps")] [Fact] public async Task Can_resolve_source_location_from_pdb() { diff --git a/src/Management/test/Endpoint.Test/ManagementPort/ManagementEndpointServedOnDifferentPortTest.cs b/src/Management/test/Endpoint.Test/ManagementPort/ManagementEndpointServedOnDifferentPortTest.cs index 988a82d745..2808be91f5 100644 --- a/src/Management/test/Endpoint.Test/ManagementPort/ManagementEndpointServedOnDifferentPortTest.cs +++ b/src/Management/test/Endpoint.Test/ManagementPort/ManagementEndpointServedOnDifferentPortTest.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Net; +using System.Runtime.InteropServices; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Hosting.Server.Features; @@ -142,8 +143,7 @@ public async Task AspNetDefaultPort_AlternateManagementPortConfigured_Accessible actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetDefaultPort_AlternateManagementPortAndSchemeConfigured_AccessibleOnSeparatePortsAndSchemes() { const string managementPort = "8000"; @@ -180,8 +180,7 @@ public async Task AspNetDefaultPort_AlternateManagementPortAndSchemeConfigured_A actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsConfigured_NoManagementPortConfigured_BothAccessibleOnSamePort() { const string appHttpPort = "6000"; @@ -218,8 +217,7 @@ public async Task AspNetCustomPortsConfigured_NoManagementPortConfigured_BothAcc actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsConfigured_SameManagementPortConfigured_OnlyActuatorAccessible() { const string appHttpPort = "6000"; @@ -257,8 +255,7 @@ public async Task AspNetCustomPortsConfigured_SameManagementPortConfigured_OnlyA actuatorResponse.StatusCode.Should().Be(HttpStatusCode.NotFound); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsConfigured_AlternateManagementPortConfigured_AccessibleOnSeparatePorts() { const string appHttpPort = "6000"; @@ -304,8 +301,7 @@ public async Task AspNetCustomPortsConfigured_AlternateManagementPortConfigured_ actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsConfigured_AlternateHttpsManagementPortConfigured_AccessibleOnSeparatePortsAndSchemes() { const string appHttpPort = "6000"; @@ -352,8 +348,7 @@ public async Task AspNetCustomPortsConfigured_AlternateHttpsManagementPortConfig actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInEnvironmentVariables_NoManagementPortConfigured_BothAccessibleOnSamePort() { const string appHttpPort = "6000"; @@ -388,8 +383,7 @@ public async Task AspNetCustomPortsInEnvironmentVariables_NoManagementPortConfig actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInEnvironmentVariables_SameManagementPortConfigured_OnlyActuatorAccessible() { const string appHttpPort = "6000"; @@ -429,8 +423,7 @@ public async Task AspNetCustomPortsInEnvironmentVariables_SameManagementPortConf actuatorResponse.StatusCode.Should().Be(HttpStatusCode.NotFound); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInEnvironmentVariables_AlternateManagementPortConfigured_AccessibleOnSeparatePorts() { const string appHttpPort = "6000"; @@ -478,8 +471,7 @@ public async Task AspNetCustomPortsInEnvironmentVariables_AlternateManagementPor actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInEnvironmentVariables_AlternateHttpsManagementPortConfigured_AccessibleOnSeparatePortsAndSchemes() { const string appHttpPort = "6000"; @@ -528,8 +520,7 @@ public async Task AspNetCustomPortsInEnvironmentVariables_AlternateHttpsManageme actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInCode_NoManagementPortConfigured_BothAccessibleOnSamePort() { const string appHttpPort = "6000"; @@ -565,8 +556,7 @@ public async Task AspNetCustomPortsInCode_NoManagementPortConfigured_BothAccessi actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInCode_SameManagementPortConfigured_OnlyActuatorAccessible() { const string appHttpPort = "6000"; @@ -607,8 +597,7 @@ public async Task AspNetCustomPortsInCode_SameManagementPortConfigured_OnlyActua actuatorResponse.StatusCode.Should().Be(HttpStatusCode.NotFound); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInCode_AlternateManagementPortConfigured_AccessibleOnSeparatePorts() { const string appHttpPort = "6000"; @@ -657,8 +646,7 @@ public async Task AspNetCustomPortsInCode_AlternateManagementPortConfigured_Acce actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetCustomPortsInCode_AlternateHttpsManagementPortConfigured_AccessibleOnSeparatePortsAndSchemes() { const string appHttpPort = "6000"; @@ -708,8 +696,7 @@ public async Task AspNetCustomPortsInCode_AlternateHttpsManagementPortConfigured actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetDynamicPortsConfigured_NoManagementPortConfigured_BothAccessibleOnSamePort() { var appSettings = new Dictionary @@ -747,8 +734,7 @@ public async Task AspNetDynamicPortsConfigured_NoManagementPortConfigured_BothAc actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetDynamicPortsConfigured_AlternateManagementPortConfigured_AccessibleOnSeparatePorts() { const string managementPort = "8000"; @@ -796,8 +782,7 @@ public async Task AspNetDynamicPortsConfigured_AlternateManagementPortConfigured actuatorResponse.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] // https://github.com/dotnet/aspnetcore/issues/42273 + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task AspNetDynamicPortsConfigured_AlternateHttpsManagementPortConfigured_AccessibleOnSeparatePortsAndSchemes() { const string managementPort = "8000"; diff --git a/src/Management/test/Endpoint.Test/SpringBootAdminClient/HostBuilderTest.cs b/src/Management/test/Endpoint.Test/SpringBootAdminClient/HostBuilderTest.cs index ae623702d9..7687a578c4 100644 --- a/src/Management/test/Endpoint.Test/SpringBootAdminClient/HostBuilderTest.cs +++ b/src/Management/test/Endpoint.Test/SpringBootAdminClient/HostBuilderTest.cs @@ -4,6 +4,7 @@ using System.Net; using System.Net.Http.Json; +using System.Runtime.InteropServices; using System.Text; using FluentAssertions.Extensions; using Microsoft.AspNetCore.Builder; @@ -58,8 +59,7 @@ public async Task CanUseDynamicHttpPort() requestApplication.ServiceUrl.Port.Should().BePositive(); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task CanUseDynamicHttpsPort() { var appSettings = new Dictionary diff --git a/src/Security/test/Authorization.Certificate.Test/CertificateAuthorizationTest.cs b/src/Security/test/Authorization.Certificate.Test/CertificateAuthorizationTest.cs index 5cafd5a32d..806ca83c7e 100644 --- a/src/Security/test/Authorization.Certificate.Test/CertificateAuthorizationTest.cs +++ b/src/Security/test/Authorization.Certificate.Test/CertificateAuthorizationTest.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Net; +using System.Runtime.InteropServices; using System.Security.Cryptography.X509Certificates; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -81,8 +82,7 @@ public async Task CertificateAuth_RejectsSpaceMismatch() response.StatusCode.Should().Be(HttpStatusCode.Forbidden); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task CertificateAuth_AcceptsSameSpace_DiegoCert() { var requestUri = new Uri($"https://localhost/{CertificateAuthorizationPolicies.SameSpace}"); @@ -98,8 +98,7 @@ public async Task CertificateAuth_AcceptsSameSpace_DiegoCert() response.StatusCode.Should().Be(HttpStatusCode.OK); } - [Fact] - [Trait("Category", "SkipOnMacOS")] + [FactSkippedOnPlatform(nameof(OSPlatform.OSX))] public async Task CertificateAuth_AcceptsSameOrg_DiegoCert() { var requestUri = new Uri($"https://localhost/{CertificateAuthorizationPolicies.SameOrg}"); diff --git a/src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.cs b/src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.cs index 814e741ea1..6814ee9fe2 100644 --- a/src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.cs +++ b/src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.cs @@ -20,7 +20,6 @@ namespace Steeltoe.Security.DataProtection.Redis.Test; public sealed partial class RedisDataProtectionBuilderExtensionsTest { [Fact] - [Trait("Category", "SkipOnMacOS")] public async Task Stores_session_state_in_Redis() { const string appName = "SHARED-APP-NAME"; diff --git a/src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.net90.cs b/src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.other.cs similarity index 100% rename from src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.net90.cs rename to src/Security/test/DataProtection.Redis.Test/RedisDataProtectionBuilderExtensionsTest.other.cs diff --git a/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj b/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj index 39e575c9a1..5de5a0bade 100644 --- a/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj +++ b/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/src/Steeltoe.All.sln b/src/Steeltoe.All.sln index 23230b91f9..1e8a438ee2 100644 --- a/src/Steeltoe.All.sln +++ b/src/Steeltoe.All.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.32112.339 +# Visual Studio Version 18 +VisualStudioVersion = 18.0.11222.15 d18.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Steeltoe.Common", "Common\src\Common\Steeltoe.Common.csproj", "{61812938-5132-4AB6-B48D-2DF4189B3E37}" EndProject diff --git a/src/Steeltoe.All.sln.DotSettings b/src/Steeltoe.All.sln.DotSettings index b57f8f9c6d..4980f6d113 100644 --- a/src/Steeltoe.All.sln.DotSettings +++ b/src/Steeltoe.All.sln.DotSettings @@ -193,8 +193,7 @@ OnSingleLine False 160 - <?xml version="1.0" encoding="utf-16"?> -<Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"> + <Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"> <TypePattern DisplayName="Non-reorderable types" RemoveRegions="All"> <TypePattern.Match> <Or> @@ -218,7 +217,7 @@ <HasMember> <And> <Kind Is="Method" /> - <HasAttribute Name="Xunit.FactAttribute" Inherited="True" /> + <HasAttribute Inherited="True" Name="Xunit.FactAttribute" /> </And> </HasMember> </And> @@ -230,7 +229,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Group DisplayName="Fields"> @@ -243,7 +242,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Static"> @@ -257,7 +256,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance Readonly"> @@ -271,7 +270,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance"> @@ -287,7 +286,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> </Group> @@ -300,7 +299,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance"> @@ -313,7 +312,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> </Group> @@ -324,7 +323,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Group DisplayName="Events"> @@ -336,7 +335,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance"> @@ -349,7 +348,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> </Group> @@ -364,7 +363,7 @@ </Or> </Entry.Match> <Entry.SortBy> - <Kind Order="Constructor" /> + <Kind Is="0" Order="Constructor" /> </Entry.SortBy> </Entry> <Entry DisplayName="Test methods" Priority="100"> @@ -374,6 +373,8 @@ <Or> <HasAttribute Name="Xunit.FactAttribute" /> <HasAttribute Name="Xunit.TheoryAttribute" /> + <HasAttribute Name="FactSkippedOnPlatform" /> + <HasAttribute Name="TheorySkippedOnPlatform" /> </Or> </And> </Entry.Match> @@ -395,7 +396,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Nested types"> @@ -412,7 +413,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Group DisplayName="Fields"> @@ -425,7 +426,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Static"> @@ -439,7 +440,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance Readonly"> @@ -453,7 +454,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance"> @@ -469,7 +470,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> </Group> @@ -482,7 +483,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance"> @@ -495,7 +496,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> </Group> @@ -506,7 +507,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Group DisplayName="Events"> @@ -518,7 +519,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Instance"> @@ -531,7 +532,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> </Group> @@ -554,7 +555,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access /> + <Access Is="0" /> </Entry.SortBy> </Entry> </Group> @@ -575,7 +576,7 @@ </And> </Entry.Match> <Entry.SortBy> - <Access Order="Private Internal Protected ProtectedInternal Public" /> + <Access Is="0" Order="Private Internal Protected ProtectedInternal Public" /> </Entry.SortBy> </Entry> <Entry DisplayName="Nested types"> diff --git a/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj b/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj index c54c1fa2e4..eeb1f5cf99 100644 --- a/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj +++ b/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj @@ -1,14 +1,13 @@ net10.0;net9.0;net8.0 - false - enable true true true + $(NoWarn);S104;SA1636 - + @@ -23,12 +22,8 @@ - - - -