Files
olp/.github/workflows/test.yml
T
taodengandClaude Opus 4.7 c5777aa4d7 fix(ci): correct bootstrap-tolerance gate in test.yml
The bootstrap commit's test.yml had an incorrect skip condition. The
intent was "if no test-features.mjs, skip" — but the actual logic was
"skip only if no test-features.mjs AND no npm test script in
package.json." Since package.json declares `scripts.test`, the second
check returned true and the gate never fired; `npm test` ran and
failed with `Cannot find module test-features.mjs` (verified at
GitHub Actions run 26324988738 on the bootstrap commit).

Fix: drop the second clause. The file's presence is the only correct
gate — the npm script is always present in package.json from day one,
so checking it adds no information. Comment makes the bootstrap-vs-
Phase-1 lifecycle explicit so future readers don't reintroduce the
two-clause guard.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 15:50:27 +10:00

58 lines
1.7 KiB
YAML

name: Tests
on:
push:
branches: [main]
pull_request:
jobs:
test-features:
name: test-features.mjs (smoke)
runs-on: ubuntu-latest
strategy:
matrix:
node-version: ['20', '24']
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Detect package-lock
id: detect_lock
shell: bash
run: |
if [ -f package-lock.json ]; then
DEPS="$(node -p "Object.keys(require('./package.json').dependencies || {}).length")"
if [ "$DEPS" -gt 0 ]; then
echo "needs_install=true" >> $GITHUB_OUTPUT
else
echo "needs_install=false" >> $GITHUB_OUTPUT
fi
else
echo "needs_install=false" >> $GITHUB_OUTPUT
fi
- name: npm install (if dependencies present)
if: steps.detect_lock.outputs.needs_install == 'true'
run: npm ci
- name: Run npm test
shell: bash
run: |
# Bootstrap tolerance: if test-features.mjs does not exist yet (Phase 0
# ships before Phase 1 lands the test harness), skip with a notice.
# The `npm test` script is configured in package.json from day one, so
# checking script presence is not a useful gate — the file must exist.
if [ ! -f test-features.mjs ]; then
echo "::notice::test-features.mjs not present yet (Phase 0 bootstrap phase). Skipping. Test harness lands with Phase 1 per docs/adr/0001 / spec §6."
exit 0
fi
npm test