Repository navigation
Modernize CoreCLR testing to .NET 10 and .NET 11 - #615
Merged
Merged
Conversation
Wiktor Kopec (wiktork)
added this pull request to stack #616
October 14, 2026 18:35
Wiktor Kopec (wiktork)
force-pushed
the
test-dotnet10
branch
from
October 14, 2026 20:29
2a162b6 to
f13a137
Compare
Limit CoreCLR test targets, SDKs, runtimes, and Windows/Linux test jobs to .NET 10 and .NET 11 while retaining desktop .NET Framework coverage. Use a supported Linux test host and document the updated test prerequisites. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7d6d0d6e-106e-4224-8dee-1b789b21b8ce
Declare win-x86 for the existing net462 desktop executor so .NET 10 and .NET 11 builds can resolve the runtime-specific assets restored by the pipeline. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7d6d0d6e-106e-4224-8dee-1b789b21b8ce
Ignore only the managed CoreLib entry-point bootstrap frame in exception snapshots and omit obsolete development runtime configuration from portable test artifacts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7d6d0d6e-106e-4224-8dee-1b789b21b8ce
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7d6d0d6e-106e-4224-8dee-1b789b21b8ce
Wiktor Kopec (wiktork)
force-pushed
the
test-dotnet10
branch
from
October 15, 2026 16:35
f1c706b to
401fe5d
Compare
Wiktor Kopec (wiktork)
marked this pull request as ready for review
October 15, 2026 16:43
Patrick Nelson (plnelson)
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernize CoreCLR testing to cover only .NET 10 and .NET 11 while preserving desktop .NET Framework support.
This is the second draft layer of stack 616, based on #614 (
build-pool-cfs). Both layers remain drafts for CI validation and review. This layer includes follow-up fixes for desktop runtime assets, the .NET 11 exception-stack baseline, and portable Linux test-host startup.Change Log
net462;net10.0;net11.0andTestAppRunneratnet10.0;net11.0; retire the .NET Core 3.1 and .NET 5/6/7 test targets.win-x86instead of legacywin7-x86for the existingnet462desktop executor, so restore includes the runtime-specific assets requested by modern SDK builds. Keep the desktop framework target and x86 host unchanged.System.Environment.CallEntryPointbootstrap frame from exception-snapshot baselines, alongside the existing test-runner exclusion. Continue checking all application frames and exception callback ordering.GenerateRuntimeConfigDevFile=falseforInstrEngineTests. Copied test artifacts use their adjacent test host instead of obsolete build-machine NuGet probing configuration.docs/test.mdand related framework comments. Leavedocs/build.md, product framework targets, IL tooling versions, minimum-version feature gates, and native project toolsets unchanged.Test Methodology
Local managed validation used SDK
11.0.100-rc.1.26425.128. The test profiler was compiled for x64 and x86 using the installed v145 toolset with local-onlyPlatformToolset=v145andSpectreMitigation=falsecommand-line overrides; the committed native project configuration remains v143. Profiler-backed execution used the native production engine binaries from the preceding CI run and the newly compiled test-profiler DLLs.For the Windows commands below,
$root = (Get-Location).Pathwas set at the repository root;DOTNET_EXE_X64andDOTNET_EXE_X86pointed to the installed x64/x86 dotnet hosts.dotnet build '.\src\Tests\InstrEngineTests\InstrEngineTests\InstrEngineTests.csproj' --no-restore -t:Rebuild -p:Platform=AnyCPU --verbosity quietnet462,net10.0, andnet11.0; zero warnings/errors.foreach ($framework in @('net10.0','net11.0','net462')) { dotnet test "$root\bin\Debug\AnyCPU\$framework\InstrEngineTests.dll" --settings "$root\tests\TestSettings\x64.runsettings" --verbosity quiet; if ($LASTEXITCODE -ne 0) { throw "Suite failed: $framework" } }dotnet test "$root\bin\Debug\AnyCPU\net11.0\InstrEngineTests.dll" --settings "$root\tests\TestSettings\x64.runsettings" --verbosity quiet11.0.0-rc.2.26504.105x64/x86 runtimes. The SDK/test host remained RC1; the instrumented child applications ran RC2.git --no-pager diff --check 'HEAD^...HEAD'git --no-pager diff --check 'build-pool-cfs...test-dotnet10' --The Linux suite was run under WSL Ubuntu 22.04 with an isolated SDK
10.0.402/ VSTest18.7.0and the preceding CI's Linux native binaries. Exact invocation:Result: passed, 62 tests passed and 9 skipped (71 total), with no test-host startup exception. Temporary isolated SDK/runtime installations were removed after validation.
Additional artifact checks confirmed that the modern targets no longer emit
InstrEngineTests.runtimeconfig.dev.json, retain their normal runtime configuration and adjacenttesthost.dll, and preserve desktop targeting. Actual .NET 10/11 exception traces match the complete baseline after the existing bootstrap-line filtering; the .NET 11 CoreLib entry-point frame is specifically marked[TestIgnore].Earlier validation also parsed all 51 YAML files, compiled all 62 embedded C#/IL fixtures for each modern runtime, passed all 16 Debug/Release and x64/x86 runner smoke cases, and built the desktop executor in x86 Debug/Release using both SDK 10.0.402 and SDK 11 RC1.
CI follow-ups: the initial upper-layer run failed because the desktop executor's legacy RID did not supply
net462/win-x86assets; the portable RID fixes that restore/build mismatch. Run 2026101403 subsequently exposed two test issues: .NET 11 adds the managed startup frame introduced by dotnet/runtime#126222, and VSTest 18.7 crashes when the SDK 11-generated development runtime config lacksadditionalProbingPaths. The latest commit addresses both without weakening the application-frame or exception-callback assertions.The unchanged lower layer already passed run 2026101404. The updated stack is being validated by unsigned run 2026101501, pinned to upper merge commit
0b62c4f9d83de530348954616b8a31261f19052b(updated upper heada15eecb0680b4c7e6db9316fca5c3b64691aa781plus the passing lower-layer merge). This new run is in progress; no claim of CI success yet.Not run locally: the full native unit-test matrix, a fresh production-engine build using the CI v143/Spectre configuration, or the complete Linux .NET 11 suite with a locally rebuilt Linux test profiler. Remote CI remains the integration gate. No signed pipeline was manually queued, and neither PR was made ready or merged.