Skip to content

test(android): cover native libraries below runtime-named ancestors - #7256

Closed
Leozz04 wants to merge 1 commit into
morluto:mainfrom
Leozz04:test/android-nested-library-conventions
Closed

Leozz04 wants to merge 1 commit into
morluto:mainfrom
Leozz04:test/android-nested-library-conventions

Conversation

@Leozz04

@Leozz04 Leozz04 commented Oct 26, 2026

Copy link
Copy Markdown

Summary

Add a filesystem-boundary regression for ordinary JNI-layout libraries nested below runtime-library-named ancestor directories. This extends coverage for the existing shared path-convention fix in 8ba739fd, associated with the already closed #6862.

Problem and expected behavior

An inert entry such as assets/libflutter.so/lib/arm64-v8a/libordinary.so is a native-library candidate by JNI layout. Its ancestor should neither add a Flutter runtime family nor replace its jni-library-convention bridge basis. Existing directory/text-descendant tests do not exercise this native-library descendant.

Change and scope

One test covers Flutter, Unity, React Native and Hermes ancestor names. It checks exact component membership, runtime families, all four JNI bridge candidates, inventory provenance and coverage. Only tests/boundary/filesystem/android/application.test.ts changes, with 41 added lines.

Contract and boundary impact

  • Owner: Android inventory-to-application projection boundary test.
  • Scope decision: not applicable to regression coverage within existing behavior.
  • CLI/MCP, provider, reconstruction, schema, dependency and generated-metadata contracts: unchanged.
  • The new test creates and reads its own synthetic ZIP through existing inventory/projection code. It uses the existing test-owned temporary-directory cleanup; it does not execute a target or contact a network service.

Evidence and regression coverage

On base c2b0c955cd9935886dc24fdb02c031f955476457, removing only the non-final/non-framework segment guard from nativeRuntimeConvention makes this test fail with extra flutter, react-native and unity families. All 11 preexisting Android tests still pass. Restoring the production helper returns the Android/Apple focused suite to green. The mutation is not included in the commit.

These inert entries are JNI-path candidates, not ELF-recognized binaries. ELF-outside-lib-layout fallback, real Android devices/providers and cross-platform execution remain unverified.

Validation performed

Linux x64, Node 24.22.1 / npm 11.16.0:

  • npm run test:focused -- tests/boundary/filesystem/android/application.test.ts tests/boundary/filesystem/appleApplication.test.ts: 24 passed across 2 files.
  • npm run check: failed at Knip on the existing unused isToolFamilyId re-export in src/contracts/toolFamilies.ts:54. Running npm run knip with the approved test addition removed reproduces the same failure on the clean base. That file is unchanged here; feat(browser): save values in browser scenarios and send them in later steps #7162 independently records the same main-baseline failure.
  • npm run check:fast, npm run verify:architecture-guards, npm run knip:production, and npm run lint:typed: passed. Production reachability reports advisory candidates. npm run verify:test-discovery: all 2566 test files discovered exactly once.
  • git diff --check and comparison against the approved one-file patch: passed.

Hosted checks will be reported separately from these local results. Full local suite and real-provider results are not claimed.

Compatibility, safety, and release

No behavior/API migration, new dependency, package metadata or release change. Fixtures contain synthetic, inert data and retain existing cleanup ownership.

AI assistance: OpenAI Codex prepared this test and ran the checks above. Human readiness remains pending below.

Author readiness

Human owner: @Leozz04

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

Before merge

  • This PR addresses a concrete problem or an agreed enhancement.
  • Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

@greptile-apps

greptile-apps Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Low impact] This test-only change appears safe to merge.

Summary

Adds one Android filesystem-boundary test for ordinary JNI-layout libraries beneath Flutter, Unity, React Native, and Hermes library-named directories.

  • Android projection tests cover JNI libraries below runtime-named folders.

Reviews (1) · Last reviewed commit: "test(android): cover native libraries be..." · Reviewed by Greptile

@morluto

morluto commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Thanks for extending the Android path-convention regression. The underlying runtime-ancestor interpretation was fixed in 8ba739f and #6862 is closed; the remaining change is an additional JNI-layout test case. I am closing this coverage-only follow-up for now. Please reopen if it demonstrates a distinct behavior or coverage gap we should retain.

@morluto morluto closed this Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Android graph infers Flutter from a text file inside a library-named directory

2 participants