Add dotnet test integration tests for all Apple platforms#25320
Add dotnet test integration tests for all Apple platforms#25320jonathanpeppers wants to merge 11 commits into
dotnet test integration tests for all Apple platforms#25320Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Create DotNetTestTest that runs 'dotnet test' on projects created from the iostest, tvostest, maccatalysttest, and macostest templates. This verifies the MTP (Microsoft Testing Platform) pipeline works end-to-end, including the --server/--dotnet-test-pipe argument passthrough via RunArguments. Also add 'test' as a supported verb in DotNet.Execute. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
macOS and Mac Catalyst don't use mlaunch (they use 'open' via Desktop.targets), so MTP support requires a different approach. Comment out those test cases for now. Also skip the /v:diag and /consoleloggerparameters workaround args when the verb is 'test' to prevent them leaking through to the MTP test runner via RunArguments. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
32ce330 to
5c37575
Compare
Update mlaunch NuGet package to include MTP (Microsoft Testing Platform) support for iOS and tvOS simulator test execution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
5c37575 to
4c9418b
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The NUnit runner process sets MSBuildSDKsPath and MSBUILD_EXE_PATH which interfere with the child dotnet process SDK resolution. Every DotNet.Execute call clears these; we must do the same. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| env ["MSBuildSDKsPath"] = null; | ||
| env ["MSBUILD_EXE_PATH"] = null; | ||
| var testArgs = new List<string> { "test", proj }; | ||
| var testResult = Execution.RunAsync (DotNet.Executable, testArgs, env, Console.Out, workingDirectory: outputDir, timeout: TimeSpan.FromMinutes (10)).Result; |
There was a problem hiding this comment.
It's failing with "Running the ComputeRunArguments target to discover run commands failed for this project. Fix the errors and warnings and run again.", so maybe a binlog would be able to reveal what's going on?
There was a problem hiding this comment.
The latest has a .binlog now, but it's partial (because something aborted), and I can't seem to get the error message out of it.
I think the problem is something to do with having no Simulator running at all -- are these tests setup for having a simulator? Or should we test in a different place?
There was a problem hiding this comment.
Error message is:
Running the ComputeRunArguments target to discover run commands failed for this project. Fix the errors and warnings and run again.
There was a problem hiding this comment.
I tried it locally, and this is what happens:
Exit code: 1
Standard output: Using Xcode 26.4.1 found in /Applications/Xcode_26.4.1.app/Contents/Developer
Running in dotnet test mode...
xcrun simctl list --json --json-output /var/folders/wh/sk44ynps73x6w9_ktl99dr7c0000gp/T/tmp12ZLGx.tmp
Target simulator: iPad Air 11-inch (M4) (2F869A26-03F4-4965-A010-FD33C6C2D994) (2F869A26-03F4-4965-A010-FD33C6C2D994)
App path: bin/Debug/net11.0-ios/iossimulator-arm64/iostest.app/
Bundle identifier: com.companyname.iostest
dotnet test mode (pipe: /tmp/7f82dab60eaf49cd8ee2f1768f441d70)
[RemoteTestAdapter] Installing app: bin/Debug/net11.0-ios/iossimulator-arm64/iostest.app/
xcrun simctl install 2F869A26-03F4-4965-A010-FD33C6C2D994 bin/Debug/net11.0-ios/iossimulator-arm64/iostest.app/
Error output: An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=405):
Unable to lookup in current state: Shutdown
error HE1045: Failed to execute 'simctl': 'simctl install 2F869A26-03F4-4965-A010-FD33C6C2D994 bin/Debug/net11.0-ios/iossimulator-arm64/iostest.app/' returned the exit code 149.
error HE1046: Additional output: xcrun simctl install 2F869A26-03F4-4965-A010-FD33C6C2D994 bin/Debug/net11.0-ios/iossimulator-arm64/iostest.app/
error HE1046: Additional output: An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=405):
error HE1046: Additional output: Unable to lookup in current state: Shutdown
Test run summary: Zero tests ran
error: 1
total: 0
failed: 0
succeeded: 0
skipped: 0
duration: 4s 175ms
Test run completed with non-success exit code: 1 (see: https://aka.ms/testingplatform/exitcodes)
The simulator has to be launched before you can install apps into it.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
✅ [CI Build #3885b03] Build passed (Build packages) ✅Pipeline on Agent |
✅ [PR Build #3885b03] Build passed (Build packages) ✅Pipeline on Agent |
✅ [CI Build #3885b03] Build passed (Detect API changes) ✅Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
✅ [CI Build #3885b03] Build passed (Build macOS tests) ✅Pipeline on Agent |
🔥 [CI Build #3885b03] Test results 🔥Test results❌ Tests failed on VSTS: test results 1 tests crashed, 28 tests failed, 128 tests passed. Failures❌ dotnettests tests (iOS)1 tests failed, 0 tests passed.Failed tests
Html Report (VSDrops) Download ❌ dotnettests tests (tvOS)1 tests failed, 0 tests passed.Failed tests
Html Report (VSDrops) Download ❌ introspection tests6 tests failed, 3 tests passed.Failed tests
Html Report (VSDrops) Download ❌ monotouch tests (iOS)19 tests failed, 0 tests passed.Failed tests
Html Report (VSDrops) Download ❌ monotouch tests (MacCatalyst)🔥 Failed catastrophically on VSTS: test results - monotouch_maccatalyst (no summary found). Html Report (VSDrops) Download ❌ Tests on macOS Tahoe (26) tests1 tests failed, 4 tests passed.Failed tests
Html Report (VSDrops) Download Successes✅ cecil: All 1 tests passed. Html Report (VSDrops) Download macOS tests✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download Linux Build VerificationPipeline on Agent |
This PR adds end-to-end
dotnet testintegration tests for all Apple platforms (iOS, tvOS, Mac Catalyst, macOS) using the MTP (Microsoft Testing Platform) test templates.Changes
tests/dotnet/UnitTests/DotNetTestTest.cs: New parameterized test that creates a project fromdotnet new <template>, replaces the generated tests with a single passing test, and runsdotnet test.tests/common/DotNet.cs: Addedtestverb support toDotNet.Execute.The test reads the
MLAUNCH_PATHenvironment variable to override the mlaunch binary for mobile platforms (iOS/tvOS), enabling testing with the MTP-enabled mlaunch build.Screenshot
Related
Depends on mlaunch MTP support: https://devdiv.visualstudio.com/DevDiv/_git/macios-mlaunch/pullrequest/734978