The integration runner can skip its main test body and still report success.
What happened
A make test-integration run reported:
=== SUMMARY ===
Integration tests: 22 passed, 0 failed, 1 skipped
Packages: 4 passed, 0 failed
exit code 0. But test/integration/workflows — the package holding the actual end-to-end API tests — never ran. Buried above the summary:
[WARNING] Test server did not become ready (see logs/tmi-test-server.log) — skipping workflow tests
A healthy run of the same command executes 7 packages and 82 tests, including the workflows module (~537s).
Why exit 0
In scripts/run-integration-tests.py, workflow_exit is initialized to 0 and only assigned inside the branch that runs when the test server came up. When the server fails to start, the variable keeps its initial 0 and the final return api_exit if api_exit != 0 else workflow_exit yields success.
Why it matters
This is a gate. A silent skip that still exits 0 means CI (or a person) can believe the API contract was verified when it was not — the 22 tests that did run are the in-process api package, not the end-to-end workflows.
Suggested fix
Treat "server did not become ready" as a failure, or track a distinct workflows_skipped flag and make the summary and exit code reflect it. At minimum the summary line should not read like a clean pass when a whole package was skipped.
Root cause of the skip in this instance (separate, already addressed)
mkdir /tmp/tmi-test-logs: no space left on device inside the container — Docker's VM disk was full because test/results/ (one ~1.4 GB SQLite DB per CATS run, 14 GB total) was not in .dockerignore and was being transferred and COPYed into every build. Fixed separately; the harness behavior above is the issue here.
The integration runner can skip its main test body and still report success.
What happened
A
make test-integrationrun reported:exit code 0. But
test/integration/workflows— the package holding the actual end-to-end API tests — never ran. Buried above the summary:A healthy run of the same command executes 7 packages and 82 tests, including the workflows module (~537s).
Why exit 0
In
scripts/run-integration-tests.py,workflow_exitis initialized to 0 and only assigned inside the branch that runs when the test server came up. When the server fails to start, the variable keeps its initial 0 and the finalreturn api_exit if api_exit != 0 else workflow_exityields success.Why it matters
This is a gate. A silent skip that still exits 0 means CI (or a person) can believe the API contract was verified when it was not — the 22 tests that did run are the in-process
apipackage, not the end-to-end workflows.Suggested fix
Treat "server did not become ready" as a failure, or track a distinct
workflows_skippedflag and make the summary and exit code reflect it. At minimum the summary line should not read like a clean pass when a whole package was skipped.Root cause of the skip in this instance (separate, already addressed)
mkdir /tmp/tmi-test-logs: no space left on deviceinside the container — Docker's VM disk was full becausetest/results/(one ~1.4 GB SQLite DB per CATS run, 14 GB total) was not in.dockerignoreand was being transferred and COPYed into every build. Fixed separately; the harness behavior above is the issue here.