mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { classifyValidateRuns } from '../scripts/release-gate.mjs';
|
|
|
|
test('release gate waits until an exact-SHA Validate exists and completes', () => {
|
|
assert.equal(classifyValidateRuns([]), 'wait');
|
|
assert.equal(classifyValidateRuns([{ status: 'queued', conclusion: null }]), 'wait');
|
|
assert.equal(classifyValidateRuns([
|
|
{ status: 'completed', conclusion: 'success' },
|
|
{ status: 'in_progress', conclusion: null },
|
|
]), 'wait');
|
|
});
|
|
|
|
test('release gate accepts only completed success runs', () => {
|
|
assert.equal(classifyValidateRuns([
|
|
{ status: 'completed', conclusion: 'success' },
|
|
{ status: 'completed', conclusion: 'success' },
|
|
]), 'success');
|
|
});
|
|
|
|
test('release gate fails closed for red, cancelled and skipped runs', () => {
|
|
for (const conclusion of ['failure', 'cancelled', 'timed_out', 'action_required', 'skipped', null]) {
|
|
assert.equal(
|
|
classifyValidateRuns([{ status: 'completed', conclusion }]),
|
|
'fail',
|
|
`completed/${conclusion} must withhold the asset`,
|
|
);
|
|
}
|
|
});
|
|
|
|
test('one red duplicate blocks a green duplicate for the same SHA', () => {
|
|
assert.equal(classifyValidateRuns([
|
|
{ status: 'completed', conclusion: 'success' },
|
|
{ status: 'completed', conclusion: 'failure' },
|
|
]), 'fail');
|
|
});
|