66 lines
2.3 KiB
JavaScript
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
|
|
);
|
|
});
|