mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 14:05:41 +00:00
55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import {
|
|
evaluateRequiredJobs,
|
|
newestChecksByName,
|
|
pathTriggersFrontend,
|
|
pathTriggersRust,
|
|
requiredJobNames,
|
|
} from './ci-ok-aggregate.mjs';
|
|
|
|
test('pathTriggersFrontend matches frontend workflow paths', () => {
|
|
assert.equal(pathTriggersFrontend('src/App.tsx'), true);
|
|
assert.equal(pathTriggersFrontend('eslint.config.mjs'), true);
|
|
assert.equal(pathTriggersFrontend('README.md'), false);
|
|
});
|
|
|
|
test('pathTriggersRust matches rust workflow paths', () => {
|
|
assert.equal(pathTriggersRust('src-tauri/src/lib.rs'), true);
|
|
assert.equal(pathTriggersRust('src/App.tsx'), false);
|
|
});
|
|
|
|
test('requiredJobNames unions frontend and rust jobs', () => {
|
|
const names = requiredJobNames(['src/foo.ts', 'src-tauri/bar.rs']);
|
|
assert.ok(names.includes('eslint'));
|
|
assert.ok(names.includes('cargo test --workspace'));
|
|
});
|
|
|
|
test('evaluateRequiredJobs fails on red conclusions', () => {
|
|
const newest = newestChecksByName([
|
|
{
|
|
name: 'eslint',
|
|
status: 'completed',
|
|
conclusion: 'failure',
|
|
started_at: '2026-01-01T00:00:00Z',
|
|
details_url: '',
|
|
},
|
|
]);
|
|
const result = evaluateRequiredJobs(['eslint'], newest);
|
|
assert.equal(result.done, false);
|
|
assert.equal(result.failures.length, 1);
|
|
});
|
|
|
|
test('evaluateRequiredJobs passes when all required jobs succeeded', () => {
|
|
const checks = ['eslint', 'vitest run'].map((name) => ({
|
|
name,
|
|
status: 'completed',
|
|
conclusion: 'success',
|
|
started_at: '2026-01-01T00:00:00Z',
|
|
details_url: '',
|
|
}));
|
|
const result = evaluateRequiredJobs(['eslint', 'vitest run'], newestChecksByName(checks));
|
|
assert.equal(result.done, true);
|
|
});
|