Add Android device tests with bundled ICU 72#230
Draft
hahn-kev wants to merge 17 commits into
Draft
Conversation
Introduce a MAUI-based test host for on-device xUnit runs on Android, with a dotnet test script and xharness tool manifest for CI/local use. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove default shell, sample UI, and non-Android targets so the device runner project is a minimal starting point for on-device tests. Co-authored-by: Cursor <cursoragent@cursor.com>
Reference icu.net from the device test project and add RuleBasedCollator Compare coverage on Android. Map Android to Unix in Platform so native ICU loading follows the Unix path. Co-authored-by: Cursor <cursoragent@cursor.com>
Add cross-compile scripts, APK-native-library wiring, and Android-specific loading so soname dependencies and external icudt72l.dat work under FastDev. Co-authored-by: Cursor <cursoragent@cursor.com>
Multi-target the test project for net10.0-android, wire AddNUnit in the MAUI host, and delegate ICU setup through Wrapper.AndroidTestConfigure. Co-authored-by: Cursor <cursoragent@cursor.com>
DeviceRunners only writes TRX when a logger is configured; default VSTestLogger in the test project produces the documented test summary line. Co-authored-by: Cursor <cursoragent@cursor.com>
DeviceRunners can truncate TRX when messages contain control characters; regenerate a sanitized test-results.trx from tcp-test-events.jsonl before dotnet test reports. Co-authored-by: Cursor <cursoragent@cursor.com>
… TFM. Wrapper.Init() now configures bundled ICU on Android automatically, removing the test-app setup hook.
Convert smoke and diagnostics tests to NUnit and remove duplicate collation coverage already in icu.net.tests.
Run bundled ICU build and NUnit tests on an emulator; include TRX in the test-results workflow alongside desktop NUnit XML.
Use valid action SHAs, gate net10.0-android on IcuDotNetIncludeAndroid in icu.net.tests, and skip building icu.net.android.tests from the main solution so desktop jobs do not require MAUI workloads.
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.
Most of this work was done by Cursor.
Runs the icu.net test suite on a physical Android device or emulator via DeviceRunners, using bundled ICU 72 instead of system ICU. All tests use NUnit — the full
icu.net.testssuite plus a small android.tests assembly for platform smoke and ICU load diagnostics.icu.net.android.tests) — NUnit smoke tests (platform check, ICU load diagnostics) and the full NUnit suite fromicu.net.testsvia project referencedlopenwithRTLD_GLOBAL, soname symlinks, externalicudt72l.dat; bootstrap lives inicu.netand runs fromWrapper.Init()on Androidbuild-icu-android.ps1,run-android-tests.ps1,probe-android-icu.ps1net10.0-androidTFM onicu.netviaIcuDotNetIncludeAndroid(off by default for the NuGet package)dotnet testsummary; TRX rebuild from JSONL when failure output contains XML-invalid control charactersStatus: Smoke/diagnostic tests pass. Full NUnit run discovers ~458 tests; many failures are expected Android/ICU gaps (BiDi, locale, Windows-only cases), not runner wiring.
Test plan:
Note
I'm still considering if this is a good idea and actually the direction I want to go. It might be easier to use ICU4N for FW Lite as it seems to support what I care about.