-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Roll back conversion of native aot tests to merged model #100269
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This reverts commit 43b55fa.
dotnet#98469)" This reverts commit 41c6057.
|
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas |
Does this affect all merged tests or just the nativeaot ones that you are reverting? |
I'm afraid of the answer to this. I didn't check. Smoke tests are absolutely critical. |
Checking: #100319 |
This shouldn't be true anymore. The Microsoft.Dotnet.XUnitAssert package should sub in and it should be trim safe. |
The other runtime tests are failing as expected https://dev.azure.com/dnceng-public/public/_build/results?buildId=620112&view=ms.vss-test-web.build-test-results-tab . |
Trim safety is not the problem here, it's the use of reflection on random stuff in the BCL. In the case I saw, somewhere after The tests under nativeaot need to have very precise control over what's in the dependency graph to be able to test the things they are testing. The implementation of Assert.Equal that still depends on reflection doesn't feel like what we'd want in the runtime test tree (it's fine for libs testing if it's trim safe, but runtime tests should have as little code running as part of the test infrastructure as possible). |
Thanks for re-running the check - I also suspect this might be related to |
|
Can anyone sign off? It's not acceptable to have This needs to be merged before #100331 can fix testing RequiresProcessIsolation tests. The test failure is an unrelated GC issue. |
|
Thanks! |
This is unfortunate because it was added for native AOT sake in dotnet#91415. Then Tomas rewrote the test to execute corerun.exe in dotnet#91560 making it 100% unsupportable with native AOT. What the test is doing doesn't look supportable with the merged runner infra and runs into the same issues I saw in dotnet#100269. We never noticed this test is broken because tests requiring process isolation are completely busted with native AOT. I did a local run and started re-baselining again because this is not the only regression.
This is unfortunate because it was added for native AOT sake in #91415. Then Tomas rewrote the test to execute corerun.exe in #91560 making it 100% unsupportable with native AOT. What the test is doing doesn't look supportable with the merged runner infra and runs into the same issues I saw in #100269. We never noticed this test is broken because tests requiring process isolation are completely busted with native AOT. I did a local run and started re-baselining again because this is not the only regression.
There are two issues with this:
1. The merged tests are actually broken, but the failures are only observable without Helix
Helix does not report the failures (this is the reason I’m doing a rollback right away instead of waiting around for a fix). Example:
runtime/src/tests/nativeaot/SmokeTests/Exceptions/Exceptions.cs
Lines 67 to 71 in 78a895f
The above should obviously fail because there is no BringUpTest.Main (it got renamed to BringUpTest.TestEntryPoint as part of merging). The CI is all green, despite of this. The test fails if I run it locally through:
2. There are several test failures, some of which look like they’ll need fixes in the merged wrapper infrastructure
The Exceptions test wants to be able to test AppDomain.UnhandledException:
runtime/src/tests/nativeaot/SmokeTests/Exceptions/Exceptions.cs
Line 43 in 78a895f
The wrapper however generates a Try/Catch that doesn’t let UnhandledException happen. The test fails.
The TrimmingBehaviors test is sensitive to ripple effects in whole program view. The wrapper’s use of Xunit Assert.Equal brings in a massive amount of reflection that causes ripple effects all over the place. The test fails in a rather obscure way and it took a while to root cause.
I’m also concerned about whether we have any tests that may now be succeeding because of the ripple effects from the wrapper (and we would not notice if the thing they are testing gets broken because they get saved by the ripple effects.
To fix this one, can we make it so RequiresProcessIsolation really just generates a Main that calls the other Main, without checking exit codes, wrapping anything, Assert.Equaling etc?
Cc @dotnet/ilc-contrib