Skip to content

ci(firebird): dedicated live-Firebird job (close the coverage leak) - #35

Merged
andrevanzuydam merged 1 commit into
v3from
feature/firebird-ci
Jul 25, 2026
Merged

ci(firebird): dedicated live-Firebird job (close the coverage leak)#35
andrevanzuydam merged 1 commit into
v3from
feature/firebird-ci

Conversation

@andrevanzuydam

Copy link
Copy Markdown
Collaborator

What

Adds a dedicated firebird: job to .github/workflows/test.yml that runs the Firebird tests against a real Firebird 5.0.2 container, closing the CI coverage leak that let the Firebird rollback no-op ship (the rollback test only ever SKIPPED because Firebird is a non-provisioned engine in the main test job).

How

  • Stands up firebirdsql/firebird:5.0.2 + an isql readiness loop that fails the job if FB never accepts a query.
  • npm install + npm install node-firebird --no-save (the driver the adapter lazily requires; core stays zero-dependency).
  • Runs test/firebirdRollback.test.ts (live) plus firebirdCharset + firebirdUrl.
  • No-silent-skip guard: strips ANSI, then fails the job unless the rollback test printed its ROLLBACK-undoes-insert PASS line AND 4 passed, 0 failed, 0 skipped; fails on any SKIP. A missing driver / unset URL / unreachable server prints a firebird SKIP → job FAILS. This is the Node twin of PHP's php -m | grep interbase.

Scope

Additive only. The main test job and its EXCLUDED_KEYWORDS=["firebird"] service-gate exclusion are untouched (that exclusion is correct for the main multi-service runner).

PR is to run CI only — do not merge/tag.

🤖 Generated with Claude Code

The main `test` job leaves Firebird a non-provisioned engine (its skips stay
green by design via EXCLUDED_KEYWORDS=["firebird"] in test/_serviceGate.ts), so
the firebird rollback/commit regression test only ever SKIPPED in CI — the exact
gap that let the Firebird rollback no-op ship. Add a separate `firebird:` job
that stands up a real Firebird 5.0.2, installs node-firebird (--no-save; core
stays zero-dependency), and RUNS test/firebirdRollback.test.ts against it, plus
the charset + url files. A no-silent-skip guard strips ANSI and fails the job
unless the rollback test printed its PASS lines and "4 passed, 0 failed, 0
skipped" — a missing driver / unset URL / unreachable server prints a firebird
SKIP and fails the job (the Node twin of PHP's `php -m | grep interbase`).

Additive only: the main `test` job and its firebird service-gate exclusion are
untouched (correct for that already-heavy multi-service runner).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@andrevanzuydam
andrevanzuydam merged commit 65b85f5 into v3 Jul 25, 2026
3 checks passed
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.

1 participant