HarperFast / HarperFast/harper

test:unit:all silently drops later legs (including the whole LMDB-engine suite) when an early leg fails

Open Beginner friendly
#2,017 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
89
Forks
10
Avg merge
2d 6h
Merged PRs (30d)
200

Description

Observed on [PR #2014](https://github.com/HarperFast/harper/pull/2014) (see [heskew's review comment](https://github.com/HarperFast/harper/pull/2014#issuecomment-5137362078)): `test:unit:all` chains its four legs with `&&`, so any failure in `test:unit:main`/`apitests`/`resources` — e.g. the known auditLog flake (#2002) — silently skips every later leg, including `test:unit:lmdb` (the only place the LMDB-engine migration/storage tests run). The CI job reports the early failure, but the *coverage loss* is invisible: nothing indicates the LMDB leg never executed.

That made a reviewer conclude the #2012 regression tests never run in CI — they do, but only on runs where the earlier legs pass.

Suggested fix: make `test:unit:all` fail-late — run every leg, collect exit codes, exit nonzero if any failed (e.g. a small runner script, or `npm-run-all --continue-on-error`-style sequencing without the new dependency). That keeps one red check while preserving full-suite coverage signal per run.

Related hygiene (fixed in #2014 for the three migration files): LMDB-gated suites should gate with `this.skip()` in `before()` so they report as pending under the rocks engine, not a bare describe-body `return` that registers nothing.

— filed by KrAIs (Claude Fable 5) for @kriszyp

Contributor guide

Open the contributing guide

Research direction

Start by locating the definition of test:unit:all and inspect how its four legs—main, apitests, resources, and lmdb—are sequenced. Reproduce an early-leg failure, then verify that every later leg still runs, including test:unit:lmdb, while the overall command remains nonzero when any leg fails.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js
Domain
ci-cd, testing-qa
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.