-
Notifications
You must be signed in to change notification settings - Fork 511
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
[msbuild/tests] Use 'dotnet test' for the MSBuild tests (take 2). #21363
base: main
Are you sure you want to change the base?
[msbuild/tests] Use 'dotnet test' for the MSBuild tests (take 2). #21363
Conversation
This is another step towards removing Mono. This required a few changes: * Nullability updates in test code. * Explicitly sorted list of strings in a warning message, to make the warning text stable. * Stopped allowing the test assemblies to see internals of the task assembly. This was necessary for to solve a problem with duplicate types: * The netstandard2.0 version of `System.Reflection.Metadata.dll` contains the `UnconditionalSuppressMessageAttribute` type (internally). * Since we ILMerge the tasks assembly, this type ends up in Xamarin.iOS.Tasks.dll (internally). * The test assembly can't be a net472 assembly, because that means using the netfx/desktop versions of the Microsoft.Build.* assemblies, which don't work on .NET (they check for Mono, but .NET isn't Mono, so the check fails and a PlatformNotSupportedException is thrown). * So I bumped the test assembly to be a net8.0 assembly, but then there's a conflict between the `UnconditionalSuppressMessageAttribute` shipped in .NET vs the one in `Xamarin.iOS.Tasks.dll` (because the test assembly can see the internals of `Xamarin.iOS.Tasks.dll`). * The fix that doesn't work is to not merge system assemblies in the `Xamarin.iOS.Tasks.dll` assembly. `Xamarin.iOS.Tasks.Windows.dll` already does this, but it doesn't work when building remotely. * The fix that seems to work is to just not allow the test assemblies to see the internals of the task assembly. This is really an anti-pattern anyway. This required a few changes (make some API in the task assembly public, remove some legacy tests that don't apply anymore in .NET, etc.)
💻 [CI Build] Tests on macOS X64 - Mac Sonoma (14) passed 💻✅ All tests on macOS X64 - Mac Sonoma (14) passed. Pipeline on Agent |
💻 [CI Build] Tests on macOS M1 - Mac Big Sur (11) passed 💻✅ All tests on macOS M1 - Mac Big Sur (11) passed. Pipeline on Agent |
💻 [CI Build] Tests on macOS M1 - Mac Monterey (12) passed 💻✅ All tests on macOS M1 - Mac Monterey (12) passed. Pipeline on Agent |
💻 [CI Build] Tests on macOS M1 - Mac Ventura (13) passed 💻✅ All tests on macOS M1 - Mac Ventura (13) passed. Pipeline on Agent |
📚 [CI Build] Artifacts 📚Artifacts were not provided. Pipeline on Agent |
✅ API diff for current PR / commitNET (empty diffs)
✅ API diff vs stable.NET (No breaking changes)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
||
# Example TEST_FILTER: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is such an awesome thing to add to the makefiles
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.
💻 [CI Build] Windows Integration Tests passed 💻✅ All Windows Integration Tests passed. Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
🚀 [CI Build] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 97 tests passed 🎉 Tests counts✅ cecil: All 1 tests passed. Html Report (VSDrops) Download Pipeline on Agent |
This is another step towards removing Mono.
This required a few changes:
System.Reflection.Metadata.dll
containsthe
UnconditionalSuppressMessageAttribute
type (internally).Xamarin.iOS.Tasks.dll (internally).
the netfx/desktop versions of the Microsoft.Build.* assemblies, which
don't work on .NET (they check for Mono, but .NET isn't Mono, so the
check fails and a PlatformNotSupportedException is thrown).
a conflict between the
UnconditionalSuppressMessageAttribute
shippedin .NET vs the one in
Xamarin.iOS.Tasks.dll
(because the test assemblycan see the internals of
Xamarin.iOS.Tasks.dll
).Xamarin.iOS.Tasks.dll
assembly anymore.Xamarin.iOS.Tasks.Windows.dll
already does this, but it doesn't work when building remotely.
see the internals of the task assembly. This is really an anti-pattern
anyway, so no big loss. This required a few changes (make some API in
the task assembly public, remove some legacy tests that don't apply
anymore in .NET, etc.)