Skip to content

Conversation

@sbomer
Copy link
Member

@sbomer sbomer commented Oct 30, 2025

  • Enables building native AOT smoke tests for android with one APK per test project
  • Adds marker files to set expected exit code when running through helix
  • Adds a runtime-androidemulator job for native AOT smoke tests
  • Expands libraries test coverage to include non-smoke tests
  • Sets up appcontext base directory in test host
  • Calls managed main through a pinvoke when running Exe project in the runtime tests

Fixes #120715

sbomer added 30 commits October 13, 2025 17:21
- Expand native AOT smoke tests to all libraries tests - Add job for
runtime smoke tests using native AOT on emulator
Move NDK compiler logic to a shared props file and import it in test and
build projects to unify Android NativeAOT and Mono builds.
- Set ASSETS_DIR for crypto tests
  (using same pattern as existing crypto test)
- Set AppContext.BaseDirectory

We should probably change crypto tests to use
just AppContext.BaseDirectory.
- Use ReferenceXUnitWrapperGenerator != false to define SINGLE_FILE_TEST_RUNNER (android & singlefile targets) instead of IsFunctionalTest
- Condition SingleFileTestRunner compile and TrimmerRootAssembly (TestUtilities) on wrapper/generator and SkipTestUtilitiesReference
- Add Android NativeAOT publish/trim settings and set NativeLib/CustomNativeMain for android nativeaot
- Make DisableImplicitFrameworkReferences respect preexisting value and add explicit DisableImplicitFrameworkReferences=false in nativeaot tests dir
- Import testing\tests.targets when TargetsAndroid is true
- Update many NativeAOT smoke tests Main signatures to public static int Main(string[] args) to match runner invocation
- Ensure they have Main entry point
- Tighten MSBuild conditions:
  - Only set NativeLib/CustomNativeMain for Android when OutputType == Exe
  - Only import testing/tests.targets for Android when using MicrosoftNETSdk and building executables
  - Make TestNativeAOT/UseNativeAOTRuntime defaults apply when TestBuildMode == nativeaot and only include monodroid-nativeaot.cs for executable/XUnit-wrapper cases
- Avoid importing logic for SharedLibrary
- Fix library filename
- Set HasMergedInTests to ensure projects build
This import is now covered by the IsMergedTestRunnerAssembly property.
Fixes a warning about a double import.
Fixes issue where mono runtime tests are getting incorrect assembly name
due to this undesired import.
And fix resulting duplicate imports
due to build.proj getting these settings.
@sbomer
Copy link
Member Author

sbomer commented Nov 6, 2025

/azp run runtime-androidemulator

@sbomer
Copy link
Member Author

sbomer commented Nov 6, 2025

/azp run runtime-android

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@sbomer
Copy link
Member Author

sbomer commented Nov 10, 2025

/azp run runtime-androidemulator

@sbomer
Copy link
Member Author

sbomer commented Nov 10, 2025

/azp run runtime-android

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@sbomer sbomer force-pushed the sbomer/naot-android-coverage branch 2 times, most recently from 86c577c to c3b24c9 Compare November 10, 2025 21:00
@sbomer
Copy link
Member Author

sbomer commented Nov 10, 2025

/azp run runtime-androidemulator

@sbomer
Copy link
Member Author

sbomer commented Nov 10, 2025

/azp run runtime-android

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[NAOT][android] Microsoft.Extensions.Hosting.Unit.Tests failure

4 participants