Ctrl K
ComunidadGuías…

tests/setup.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import assert from 'node:assert/strict';
import { mkdir, mkdtemp, readFile } from 'node:fs/promises';
import { resolve } from 'node:path';
import test from 'node:test';
import { main } from '../src/cli/bootstrap.js';
import { doctor } from '../src/cli/commands/setup.js';
import { VERSION } from '../src/shared/version.js';

test('init writes versioned safe defaults without overwriting existing configuration', async () => {
  await mkdir('.cache/tests', { recursive: true });
  const root = await mkdtemp(resolve('.cache/tests/setup-')), path = resolve(root, 'config.json');
  const output = { write: (_value: string) => {}, error: (_value: string) => {} };
  assert.equal(await main(['init', '--repo', 'owner/repo', '--config', path], output), 0);
  const config = JSON.parse(await readFile(path, 'utf8'));
  assert.equal(config.agent.image, 'ghcr.io/indada/repopilot-agent:' + VERSION);
  assert.equal(config.agent.enabled, false); assert.equal(config.agent.repair, false); assert.equal(config.publish, false);
  await assert.rejects(main(['init', '--repo', 'owner/other', '--config', path], output), /EEXIST/);
  assert.equal(JSON.parse(await readFile(path, 'utf8')).repository, 'owner/repo');
  const lines: string[] = [];
  assert.equal(await main(['--version'], { ...output, write: text => lines.push(text) }), 0);
  assert.deepEqual(lines, [JSON.parse(await readFile('package.json', 'utf8')).version]);
  const calls: string[][] = [];
  const exit = await doctor({ config: path }, { ...output, write: text => lines.push(text) }, async (_binary, args) => {
    calls.push(args); return { code: 0, stdout: args[0] === 'info' ? 'windows' : '', stderr: 'sensitive daemon output', timedOut: false };
  });
  assert.equal(exit, 1); assert.ok(lines.some(line => line.includes('FAIL Docker daemon')));
  assert.ok(!lines.join('\n').includes('sensitive daemon output'));
  assert.ok(calls.every(args => ['--version', 'info', 'image'].includes(args[0]!)));
});