fix: isolate artifact rebuild from release suites
Memind CI / Test, build, and release guards (push) Has been cancelled

This commit is contained in:
john
2026-07-26 15:19:30 +08:00
parent b1577a16e9
commit ea07f6f250
3 changed files with 50 additions and 2 deletions
+22 -1
View File
@@ -1,7 +1,7 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { parseRunnerArgs, runWithConcurrency } from './runner.mjs';
import { parseRunnerArgs, runSuitesWithConcurrency, runWithConcurrency } from './runner.mjs';
test('runner accepts a bounded suite concurrency and rejects unsafe values', () => {
assert.equal(
@@ -31,3 +31,24 @@ test('runWithConcurrency preserves result order and never exceeds its worker bud
assert.deepEqual(results, ['result-0', 'result-1', 'result-2', 'result-3']);
assert.equal(peak, 2);
});
test('exclusive suites finish before parallel suites start', async () => {
const events = [];
const results = await runSuitesWithConcurrency(
[
{ id: 'mutating', exclusive: true },
{ id: 'parallel-a' },
{ id: 'parallel-b' },
],
2,
async (suite) => {
events.push(`start:${suite.id}`);
await new Promise((resolve) => setTimeout(resolve, 5));
events.push(`end:${suite.id}`);
return suite.id;
},
);
assert.deepEqual(results, ['mutating', 'parallel-a', 'parallel-b']);
assert.ok(events.indexOf('end:mutating') < events.indexOf('start:parallel-a'));
assert.ok(events.indexOf('end:mutating') < events.indexOf('start:parallel-b'));
});