fix: raise release subprocess buffer

Issue: #169
User-Visible: no
This commit is contained in:
Sergey Matyunin
2026-08-17 14:11:49 +03:00
parent 135a18a3ca
commit bc478b1756
2 changed files with 15 additions and 0 deletions
+3
View File
@@ -15,6 +15,7 @@ import { assertReleaseContract } from './release-contract.mjs';
import { classifyValidateRuns } from './release-gate.mjs';
const sleep = (ms) => new Promise((done) => setTimeout(done, ms));
const SUBPROCESS_MAX_BUFFER = 64 * 1024 * 1024;
class ReleaseAssetContentError extends Error {}
@@ -192,6 +193,7 @@ if (invokedDirectly) {
const result = spawnSync(command, commandArgs, {
cwd,
encoding: 'utf8',
maxBuffer: SUBPROCESS_MAX_BUFFER,
stdio: inherit ? 'inherit' : ['ignore', 'pipe', 'pipe'],
});
if (result.error) throw result.error;
@@ -209,6 +211,7 @@ if (invokedDirectly) {
const runBytes = (command, commandArgs, { cwd = root } = {}) => {
const result = spawnSync(command, commandArgs, {
cwd,
maxBuffer: SUBPROCESS_MAX_BUFFER,
stdio: ['ignore', 'pipe', 'pipe'],
});
if (result.error) throw result.error;
+12
View File
@@ -187,6 +187,18 @@ test('prerelease CLI reports malformed arguments without a raw stack trace', ()
assert.doesNotMatch(result.stderr, /\n\s+at\s/);
});
test('prerelease CLI can buffer the committed release bundle', () => {
const orchestrator = readFileSync(
new URL('../scripts/release-prerelease.mjs', import.meta.url), 'utf8',
);
assert.match(orchestrator, /SUBPROCESS_MAX_BUFFER = 64 \* 1024 \* 1024/);
assert.equal(
[...orchestrator.matchAll(/maxBuffer: SUBPROCESS_MAX_BUFFER/g)].length,
2,
'both text and byte subprocess readers must override the Node default buffer',
);
});
test('manual publish workflow is draft-first, exact-SHA gated and self-contained', () => {
const workflow = readFileSync(new URL('../.github/workflows/publish-prerelease.yml', import.meta.url), 'utf8');
for (const required of [