migratorDdlMatchesExportedAccountDatabaseSchema in AccountDataMigratorTest hardcoded the schema-version asset filename it validates the migrator's DDL against (.../AccountDatabase/2.json). Every future AccountDatabase schema bump would have to remember to bump this filename too, or the guard would silently keep validating against a stale schema version — the footgun that let PR #472's authError/v3 drift slip past this guard while breaking E2E.
This change resolves the highest-versioned exported schema JSON dynamically from the androidTest assets at runtime (AssetManager.list("org.libremail.data.local.AccountDatabase")), and fails loudly via assertNotNull if no schema asset is found (e.g. if schemas/ stops being wired as an androidTest asset srcDir).
Test-only change, no product code or schema files touched. On main (AccountDatabase at v2), the resolved path is still org.libremail.data.local.AccountDatabase/2.json — identical behavior to before, just computed instead of hardcoded.
Fixes issue #477.
`migratorDdlMatchesExportedAccountDatabaseSchema` in `AccountDataMigratorTest` hardcoded the schema-version asset filename it validates the migrator's DDL against (`.../AccountDatabase/2.json`). Every future `AccountDatabase` schema bump would have to remember to bump this filename too, or the guard would silently keep validating against a stale schema version — the footgun that let PR #472's `authError`/v3 drift slip past this guard while breaking E2E.
This change resolves the **highest-versioned** exported schema JSON dynamically from the androidTest assets at runtime (`AssetManager.list("org.libremail.data.local.AccountDatabase")`), and fails loudly via `assertNotNull` if no schema asset is found (e.g. if `schemas/` stops being wired as an androidTest asset srcDir).
Test-only change, no product code or schema files touched. On `main` (`AccountDatabase` at v2), the resolved path is still `org.libremail.data.local.AccountDatabase/2.json` — identical behavior to before, just computed instead of hardcoded.
Closes #477
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes issue #477.
migratorDdlMatchesExportedAccountDatabaseSchemainAccountDataMigratorTesthardcoded the schema-version asset filename it validates the migrator's DDL against (.../AccountDatabase/2.json). Every futureAccountDatabaseschema bump would have to remember to bump this filename too, or the guard would silently keep validating against a stale schema version — the footgun that let PR #472'sauthError/v3 drift slip past this guard while breaking E2E.This change resolves the highest-versioned exported schema JSON dynamically from the androidTest assets at runtime (
AssetManager.list("org.libremail.data.local.AccountDatabase")), and fails loudly viaassertNotNullif no schema asset is found (e.g. ifschemas/stops being wired as an androidTest asset srcDir).Test-only change, no product code or schema files touched. On
main(AccountDatabaseat v2), the resolved path is stillorg.libremail.data.local.AccountDatabase/2.json— identical behavior to before, just computed instead of hardcoded.Closes #477
Merge Queue Status
2026-07-10 05:13 UTC· Rule:default· triggered by merge protections2026-07-10 05:18 UTC· at17985cb04c1a06fbbf6abab053978570dadc56e3· mergeThis pull request spent 5 minutes 39 seconds in the queue, including 1 second running CI.
Required conditions to merge
-conflict-draftbase = maincheck-success = CI passedgithub-review-approved[🛡 GitHub repository ruleset rulemain]label != brokencheck-success = Debug buildcheck-neutral = Debug buildcheck-skipped = Debug buildcheck-success = Unit testscheck-neutral = Unit testscheck-skipped = Unit testscheck-success = CI passedcheck-neutral = CI passedcheck-skipped = CI passedmain]:check-success = @github-actions/CI passedcheck-neutral = @github-actions/CI passedcheck-skipped = @github-actions/CI passed