mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-07 07:55:13 +02:00
57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { test } from 'node:test';
|
|
import { runSetupDev } from './setup-dev.mjs';
|
|
|
|
test('runSetupDev runs phased setup without global linking', async () => {
|
|
const calls = [];
|
|
const logs = [];
|
|
|
|
const result = await runSetupDev({
|
|
rootDir: '/workspace/ktx',
|
|
execFile: async (command, args, options) => {
|
|
calls.push({ command, args, cwd: options.cwd });
|
|
return { stdout: `${command} ${args.join(' ')}`, stderr: '' };
|
|
},
|
|
log: (line) => logs.push(line),
|
|
});
|
|
|
|
assert.equal(result.ok, true);
|
|
assert.deepEqual(
|
|
calls.map((call) => [call.command, call.args]),
|
|
[
|
|
['pnpm', ['install', '--frozen-lockfile']],
|
|
['pnpm', ['run', 'native:rebuild']],
|
|
['pnpm', ['run', 'build']],
|
|
['pnpm', ['run', 'artifacts:build-runtime']],
|
|
[process.execPath, ['packages/cli/dist/bin.js', 'status', '--no-input']],
|
|
],
|
|
);
|
|
assert.equal(calls.some((call) => call.args.includes('link')), false);
|
|
assert.equal(logs.some((line) => line.includes('PASS doctor setup')), true);
|
|
});
|
|
|
|
test('runSetupDev stops at the failed phase and prints a retry command', async () => {
|
|
const calls = [];
|
|
const logs = [];
|
|
|
|
const result = await runSetupDev({
|
|
rootDir: '/workspace/ktx',
|
|
execFile: async (command, args) => {
|
|
calls.push({ command, args });
|
|
if (args.includes('native:rebuild')) {
|
|
const error = new Error('native rebuild failed');
|
|
error.stdout = '';
|
|
error.stderr = 'better-sqlite3 rebuild failed';
|
|
throw error;
|
|
}
|
|
return { stdout: '', stderr: '' };
|
|
},
|
|
log: (line) => logs.push(line),
|
|
});
|
|
|
|
assert.equal(result.ok, false);
|
|
assert.equal(result.failedPhase.name, 'native SQLite rebuild');
|
|
assert.equal(result.failedPhase.retry, 'pnpm run native:rebuild');
|
|
assert.equal(calls.length, 2);
|
|
assert.equal(logs.some((line) => line.includes('Retry: pnpm run native:rebuild')), true);
|
|
});
|