codebase
uses node:child_process
import { plainEnv, strip, tcmBin, tempDir } from "#codebase/tcmts/cli/test/e2e/harness"; import { spawnSync } from "node:child_process"; import fs from "node:fs"; import path from "node:path"; export function codebase(name: string) { const dir = tempDir(`releases ${name}`); const env = { ...plainEnv(), TCM_AUTHOR: "ada" }; const run = (...args: string[]) => { const r = spawnSync(process.execPath, [tcmBin(), ...args], { cwd: dir, encoding: "utf8", env }); return { status: r.status, out: strip(r.stdout + r.stderr) }; }; const tcm = (...args: string[]) => { const r = run(...args); if (r.status !== 0) throw new Error(`tcm ${args.join(" ")} (in ${name}) exited ${r.status}:\n${r.out}`); return r.out; }; const save = (text: string, mode = "update") => (fs.writeFileSync(path.join(dir, "scratch.ts"), text), tcm(mode)); tcm("init"); fs.rmSync(path.join(dir, "scratch.ts")); return { dir, run, tcm, save, file: (f: string) => path.join(dir, f) }; }
uses
- tcmts.cli.test.e2e.harness.plainEnv
- tcmts.cli.test.e2e.harness.strip
- tcmts.cli.test.e2e.harness.tcmBin
- tcmts.cli.test.e2e.harness.tempDir
used by
- tcmts.cli.test.e2e.data.testTablesAndSchedulesByRole
- tcmts.cli.test.e2e.libraries.testAnnouncementsAreCheckedBySignature
- tcmts.cli.test.e2e.libraries.testLibrariesFromAnnouncements
- tcmts.cli.test.e2e.libraries.testLibrariesFromAnotherCodebase
- tcmts.cli.test.e2e.libraries.testLibrariesTcmShips
- tcmts.cli.test.e2e.libraries.testLibraryAttestations
- tcmts.cli.test.e2e.libraries.testLibraryEffects
- tcmts.cli.test.e2e.libraries.testLibraryMirrors
- tcmts.cli.test.e2e.libraries.testLibraryUpgrades
- tcmts.cli.test.e2e.libraries.testTcmLibrariesHoldWhatTheyUse
- tcmts.cli.test.e2e.registry.testRegistryListsAnnouncedCodebases
- tcmts.cli.test.e2e.registry.testRegistryShowsAnnouncedLibraries
- tcmts.cli.test.e2e.registry.testRegistrySignInAndStars
- tcmts.cli.test.e2e.releases.testPackCarriesItsOwnCopy
- tcmts.cli.test.e2e.releases.testPackageReleases
- tcmts.cli.test.e2e.releases.testPackagesCarryWhatSiblingsKeep
- tcmts.cli.test.e2e.releases.testPackagesDependThroughReleases
- tcmts.cli.test.e2e.releases.testReleasesAnnounced
- tcmts.cli.test.e2e.releases.testReleasesTravelAndNeverChange
- tcmts.cli.test.e2e.releases.testSemverChecks
- tcmts.dev.registryTrial