\`bun run --conditions=browser src/index.ts\` pays ~15s of JIT + plugin init + DB migration per subprocess spawn in isolation mode. A pre-built binary cuts that to ~5s — most of which is now the SQLite \`:memory:\` migration that runs regardless of execution mode. Adds \`script/prebuild-test-cli.ts\` which wraps the existing build.ts with \`--single --skip-embed-web-ui --skip-install\`, then symlinks the platform-specific output to \`dist/test-cli/bin/opencode\` so the harness has a stable path. The harness (test/lib/cli-process.ts) reads OPENCODE_TEST_CLI_PATH and spawns the binary directly when set; falls back to dev mode otherwise. Strictly opt-in — default behavior, CI, and local iteration are unchanged. Anyone who wants the speedup runs: bun script/prebuild-test-cli.ts export OPENCODE_TEST_CLI_PATH="\$PWD/dist/test-cli/bin/opencode" bun test test/cli/ Measured locally: Dev mode (default): 29.9s (331 tests) Binary mode: 22.1s (-26%, after one-time 2.8s build) The win compounds as more subprocess tests are added — every new test that hits DB migration saves ~10s vs dev mode. |
||
|---|---|---|
| .. | ||
| bench-test-suite.ts | ||
| build-node.ts | ||
| build.ts | ||
| check-migrations.ts | ||
| fix-node-pty.ts | ||
| generate.ts | ||
| httpapi-exercise.ts | ||
| postinstall.mjs | ||
| prebuild-test-cli.ts | ||
| profile-test-files.ts | ||
| publish.ts | ||
| run-workspace-server | ||
| schema.ts | ||
| time.ts | ||
| trace-imports.ts | ||