Files
Elydora-Node-SDK/test/claudecode-official.test.mjs
T

45 lines
1.3 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
createFixture,
runProcess,
} from '../test-support/claudecode-test-helpers.mjs';
const claudeBinary = process.env.ELYDORA_CLAUDE_BINARY;
test('official Claude Code accepts the installed user hook contract', {
skip: claudeBinary ? false : 'set ELYDORA_CLAUDE_BINARY to the official Claude Code executable',
}, async () => {
const fixture = await createFixture();
try {
assert.equal((await fixture.install()).code, 0);
const environment = {
HOME: fixture.homeDir,
USERPROFILE: fixture.homeDir,
CLAUDE_CONFIG_DIR: fixture.claudeConfigDir,
DISABLE_AUTOUPDATER: '1',
DISABLE_TELEMETRY: '1',
};
const version = await runProcess(
claudeBinary,
['--version'],
environment,
fixture.projectDir,
);
assert.equal(version.code, 0, version.stderr);
assert.match(version.stdout, /Claude Code/i);
const doctor = await runProcess(
claudeBinary,
['doctor'],
environment,
fixture.projectDir,
);
assert.equal(doctor.code, 0, doctor.stderr);
const output = `${doctor.stdout}\n${doctor.stderr}`;
assert.doesNotMatch(output, /invalid settings|settings validation|failed to parse/i);
} finally {
await fixture.close();
}
});