npm test now preloads tests/helpers/no-session-id.mjs, which deletes CLAUDE_CODE_SESSION_ID before any test file loads, and the 18 files that spread process.env into a child use childEnv() instead (23 sites). A live session's stop guard is no longer pointed at a temp-repo lock (S133). engines stays >=18: --import exists from Node 18.18/20.6, and the quoted test glob already needs Node 21 (criteria-runner NODE_GLOB_MAJOR), so the real floor does not move. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 lines
964 B
JavaScript
20 lines
964 B
JavaScript
// tests/helpers/child-env.mjs
|
|
// The environment a test gives a child process. The lock CLI
|
|
// (lib/util/test-lock.mjs) writes a session pointer keyed by
|
|
// CLAUDE_CODE_SESSION_ID; a child that inherits the id of the session running
|
|
// the tests writes a pointer for that live session (S133). So the id never
|
|
// reaches a child unless the test sets one itself. Same shape as
|
|
// lib/util/command-env.mjs. tests/lib/session-id-isolation.test.mjs checks that
|
|
// no other file under tests/ hands the process environment to a child.
|
|
|
|
/**
|
|
* A copy of process.env without CLAUDE_CODE_SESSION_ID, with `overrides`
|
|
* applied last (a test that sets its own id keeps it).
|
|
*
|
|
* @param {Record<string, string|undefined>} [overrides] - vars to set or replace
|
|
* @returns {Record<string, string|undefined>} the child's environment
|
|
*/
|
|
export function childEnv(overrides = {}) {
|
|
const { CLAUDE_CODE_SESSION_ID, ...rest } = process.env;
|
|
return { ...rest, ...overrides };
|
|
}
|