import assert from "node:assert/strict"; import { chmodSync, mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; import { spawnSync } from "node:child_process"; import test from "node:test"; const script = join(dirname(fileURLToPath(import.meta.url)), "check-layout.mjs"); test("ignores tests inside nested Claude worktrees", () => { const root = mkdtempSync(join(tmpdir(), "agentos-layout-")); try { const nestedTest = join( root, ".claude/worktrees/other/packages/core/tests/legacy.test.ts", ); mkdirSync(dirname(nestedTest), { recursive: true }); writeFileSync(nestedTest, "export {};\n"); const bin = join(root, "bin"); mkdirSync(bin); const cargo = join(bin, "cargo"); writeFileSync(cargo, '#!/bin/sh\nprintf \'{"packages":[]}\'\n'); chmodSync(cargo, 0o755); const result = spawnSync(process.execPath, [script], { cwd: root, encoding: "utf8", env: { ...process.env, PATH: `${bin}:${process.env.PATH ?? ""}` }, }); assert.equal(result.status, 0, result.stderr || result.stdout); assert.match(result.stdout, /check-layout: OK/); } finally { rmSync(root, { recursive: true, force: true }); } });