diff --git a/config/scripts/typecheck-project-coverage.test.mjs b/config/scripts/typecheck-project-coverage.test.mjs index 1d4b7f93c97..ca4171badbf 100644 --- a/config/scripts/typecheck-project-coverage.test.mjs +++ b/config/scripts/typecheck-project-coverage.test.mjs @@ -29,6 +29,14 @@ function typedFiles(directory) { } describe('typecheck project coverage', () => { + it('keeps CLI tests in the scheduled CLI typecheck project', () => { + const project = projects.find(({ config }) => config === 'config/tsconfig.tc.cli.json') + expect(project).toBeDefined() + const tests = typedFiles('src/cli').filter(isTest) + expect(tests.length).toBeGreaterThan(0) + expect(tests.filter((file) => !project.files.has(resolve(root, file)))).toEqual([]) + }) + it('checks every shared test exactly once, in the scheduled Node project', () => { const tests = typedFiles('src/shared').filter(isTest) expect(tests.length).toBeGreaterThan(0) diff --git a/config/tsconfig.build.cli.json b/config/tsconfig.build.cli.json new file mode 100644 index 00000000000..9789e2484e1 --- /dev/null +++ b/config/tsconfig.build.cli.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.cli.json", + "exclude": [ + "../src/**/*.test.ts", + "../src/**/*.test.tsx", + "../src/**/*.spec.ts", + "../src/**/*.spec.tsx" + ] +} diff --git a/package.json b/package.json index 9b4a221d75c..df965b9a263 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "verify:localization-extraction": "node config/scripts/verify-localization-extraction.mjs", "verify:localization-coverage": "node config/scripts/audit-localization-coverage.mjs --check", "audit:localization": "node config/scripts/audit-localization-coverage.mjs", - "build:cli": "pnpm run build:packages && tsc -p config/tsconfig.cli.json --outDir out --composite false --incremental false && pnpm run prepare:cli-output", + "build:cli": "pnpm run build:packages && tsc -p config/tsconfig.build.cli.json --outDir out --composite false --incremental false && pnpm run prepare:cli-output", "prepare:cli-output": "node config/scripts/verify-cli-bin.mjs --fix-executable --fix-package-json && node config/scripts/install-dev-cli.mjs", "test:linux-cli-contract": "node config/scripts/run-linux-cli-launch-contract-docker.mjs --appimage dist/orca-linux.AppImage", "test:repro:skills-cli-runtime": "pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli", diff --git a/src/main/cli/packaged-cli-assets.test.ts b/src/main/cli/packaged-cli-assets.test.ts index 7e7713f2c73..90b4484f98b 100644 --- a/src/main/cli/packaged-cli-assets.test.ts +++ b/src/main/cli/packaged-cli-assets.test.ts @@ -1,4 +1,5 @@ import { execFile, spawn } from 'node:child_process' +import { globSync } from 'node:fs' import { copyFile, cp, @@ -68,7 +69,7 @@ describe('packaged CLI assets', () => { args: [ join(projectDir, 'node_modules', 'typescript', 'bin', 'tsc'), '-p', - join(projectDir, 'config', 'tsconfig.cli.json'), + join(projectDir, 'config', 'tsconfig.build.cli.json'), '--outDir', join(source, 'out'), '--composite', @@ -82,6 +83,9 @@ describe('packaged CLI assets', () => { timeoutMs: 60_000 }) expect(compile.code, compile.stdout + compile.stderr).toBe(0) + expect(globSync('**/*.{test,spec}.{js,jsx,cjs,mjs}', { cwd: join(source, 'out') })).toEqual( + [] + ) await mkdir(dirname(archive), { recursive: true }) await writeFile(join(source, 'out', 'package.json'), JSON.stringify({ type: 'commonjs' })) for (const name of ['zod', 'tweetnacl']) {