Files
core2026/tools/check-conditional-integration-files.test.mjs
T

66 lines
2.3 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
parseConditionalIntegrationFileRegistry,
selectEnabledConditionalIntegrationFiles,
validateConditionalIntegrationFileRegistry,
} from './check-conditional-integration-files.mjs';
test('keeps every non-database conditional Ref suite in one requirement group', async () => {
const entries = await validateConditionalIntegrationFileRegistry();
const counts = Object.fromEntries(
[...new Set(entries.map(({ requirement }) => requirement))]
.sort()
.map((requirement) => [requirement, entries.filter((entry) => entry.requirement === requirement).length])
);
assert.deepEqual(counts, {
reference_command: 5,
reference_full_lifecycle: 1,
reference_instant_diplomacy: 1,
reference_monthly: 1,
reference_snapshot: 1,
saved_trace_pair: 1,
});
});
test('rejects duplicate files and unsupported requirements', () => {
assert.throws(
() =>
parseConditionalIntegrationFileRegistry(
'test/example.integration.test.ts\treference_command\n' +
'test/example.integration.test.ts\treference_command\n'
),
/duplicates integration test path/u
);
assert.throws(
() => parseConditionalIntegrationFileRegistry('test/example.integration.test.ts\tunknown\n'),
/unsupported environment requirement/u
);
});
test('enables Ref suites only with the Ref runtime and saved traces only as a pair', async () => {
const entries = await validateConditionalIntegrationFileRegistry();
assert.deepEqual(selectEnabledConditionalIntegrationFiles(entries, {}), {
referenceFiles: [],
savedTraceFiles: [],
});
assert.equal(
selectEnabledConditionalIntegrationFiles(entries, { TURN_DIFFERENTIAL_REFERENCE: '1' }).referenceFiles.length,
9
);
assert.deepEqual(
selectEnabledConditionalIntegrationFiles(entries, {
TURN_REFERENCE_TRACE: '/tmp/ref.json',
TURN_CORE_TRACE: '/tmp/core.json',
}).savedTraceFiles,
['test/turnTraceFiles.integration.test.ts']
);
assert.throws(
() => selectEnabledConditionalIntegrationFiles(entries, { TURN_REFERENCE_TRACE: '/tmp/ref.json' }),
/must be provided together/u
);
});