release-candidate: the background test jobs (ci, acceptance) never gate a candidate; only the installer builds and the record count (0.8.12 stopped on a red ci job)

This commit is contained in:
CRTkafa 2026-10-18 01:45:37 +08:00
parent 9909b3df73
commit 9bfc107415
2 changed files with 8 additions and 4 deletions

View file

@ -36,13 +36,15 @@ describe('candidate state from the ci.yml jobs', () => {
const t = (name: string, status: string, run = 5, sha = SHA, wf = 'ci.yml'): Task => ({ id: 1, name, run_number: run, workflow_id: wf, head_sha: sha, status });
const url = (n: number) => `run/${n}`;
test('none, pending, red; the newest run counts', () => {
expect(taskState([t('ci', 'success', 5, 'b'.repeat(40))], SHA, url)).toEqual({ state: 'none' });
expect(taskState([t('linux', 'success', 5, 'b'.repeat(40))], SHA, url)).toEqual({ state: 'none' });
expect(taskState([t('ci', 'success'), t('windows', 'running')], SHA, url)).toEqual({ state: 'pending', run: 'run/5', running: ['windows (running)'] });
expect(taskState([t('ci', 'success'), t('acceptance (bun)', 'failure')], SHA, url)).toEqual({ state: 'red', run: 'run/5', failed: ['acceptance (bun)'], cancelledOnly: false });
expect(taskState([t('linux', 'success'), t('windows', 'failure')], SHA, url)).toEqual({ state: 'red', run: 'run/5', failed: ['windows'], cancelledOnly: false });
// a cancelled run (old-tag runs freed, superseded) is not a failure: a version-only child runs everything
expect(taskState([t('ci', 'success'), t('linux', 'cancelled')], SHA, url)).toEqual({ state: 'red', run: 'run/5', failed: ['linux'], cancelledOnly: true });
expect(taskState([t('ci', 'failure', 4), t('ci', 'running', 6)], SHA, url).state).toBe('pending');
expect(taskState([t('linux', 'failure', 4), t('linux', 'running', 6)], SHA, url).state).toBe('pending');
expect(taskState([t('promote', 'failure', 9, SHA, 'release.yml')], SHA, url)).toEqual({ state: 'none' });
// background tests never gate: a red ci / acceptance job leaves the candidate pending on its installers
expect(taskState([t('ci', 'failure'), t('acceptance (bun)', 'failure'), t('linux', 'success'), t('windows', 'running')], SHA, url)).toEqual({ state: 'pending', run: 'run/5', running: ['windows (running)'] });
});
test('tags and prereleases', () => {
expect(tagVersion('v0.8.5')).toBe('0.8.5');