# N13: nested `node --test` in two suites (#1508) Darkwing, 2026-09-26. Filbert's note N13, put in DEFERRED by Sage as a small reviewed item before A2. Nothing is committed, staged or pushed. ## The defect `scripts/test-foundation.sh:76` and `scripts/test-discord.sh:142` start a nested `node --test` without clearing `NODE_TEST_CONTEXT`. Under a parent test runner the nested run reports to that runner and exits 0 whatever its tests do. I reproduced it at HEAD 40a02d2b: with a failing test planted in each suite's test directory and `NODE_TEST_CONTEXT=child-v8` set, both suites exit 0. The check line reads `OK node --test ... (summary missing)`. In a control run of foundation without the variable, the same planted test fails the suite, so only a run under a parent runner is blind. I ran that control for foundation only. ## The change `n13.patch` (sha256 00868b2f) changes only the two suites, +20 −2 lines. Each suite now has a `node_tests` function that runs `env -u NODE_TEST_CONTEXT node --test`, and uses it for its test run. Each also gets one new check. It writes a failing test into the sandbox, runs it through `node_tests` with `NODE_TEST_CONTEXT=child-v8` set, and requires exit 1 and `✖ planted failure` in the output. If someone drops the `env -u`, that check fails on every run, not only under a parent runner. | File | sha256 | |---|---| | `scripts/test-foundation.sh` | 60f04822 | | `scripts/test-discord.sh` | 2ad3be74 | | `n13-check.sh` | 6a231759 | ## The check `n13-check.sh CLONE` runs in a scratch clone only and refuses the canonical checkout. For each suite it plants a failing test in the real test directory and runs the whole suite with `NODE_TEST_CONTEXT=child-v8`: | Suite | Case | Exit | |---|---|---| | foundation | HEAD, planted failure | 0 (the defect) | | foundation | fixed, planted failure | 1 | | foundation | fixed, no planted failure | 0 | | foundation | fixed but `env -u` removed, no planted failure | 1 | | discord | HEAD, planted failure | 0 (the defect) | | discord | fixed, planted failure | 1 | | discord | fixed, no planted failure | 0 | | discord | fixed but `env -u` removed, no planted failure | 1 | In the fixed runs with the planted failure, the suite prints `FAIL node --test ...` with the pass count and the planted test's name. The last row of each is the mutation: the new check alone fails the suite. All nine suites pass at 40a02d2b with this change and the queue A1 candidate: foundation 44 and discord 64, one more check each than before. I found no other nested `node --test` in the suites. `test-queue.sh` and `queue-commit.sh` already clear the variable.