Preview: Build 2 GB, kein Dev-Rueckfall bei bestehender Preview, oeffentliche Seiten nie automatisch auf Dev

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-09-30 22:29:26 +00:00
1 parent c256b78dae
commit 56637f2005
6 files changed
+51 -5

No files matched your search

+2
View File
@@ -34,6 +34,8 @@ test('buildRunArgs: Name Pflicht, Memory/Image Allowlist, Network fest', () => {
assert.throws(() => buildRunArgs({ ...base, memory: '64g' }));
assert.throws(() => buildRunArgs({ ...base, image: 'evil/img' }));
assert.ok(buildRunArgs({ ...base, image: 'oven/bun:1', memory: '512m' }));
const b2 = buildRunArgs({ ...base, memory: '2g' });
assert.ok(pair(b2, '--memory', '2g') && pair(b2, '--memory-swap', '2g'));
assert.ok(pair(buildRunArgs({ ...base, network: 'host' }), '--network', 'preview-sandbox'));
});
+17
View File
@@ -82,6 +82,23 @@ test('auto mit dev-Skript nach Build-Fehler ⇒ result dev, kein Publish', async
assert.equal(b.state, 'failed');
});
test('auto + Build-Fehler + dev-Skript + bestehender Ordner ⇒ failed, Ordner unveraendert', async () => {
const s = setup({ files: { 'package.json': PKG({ dev: 'vite' }) }, dockerImpl: (args) => ({ code: args.includes('build') ? 1 : 0 }) });
mkdirSync(join(s.config.previewsRoot, 'demo')); writeFileSync(join(s.config.previewsRoot, 'demo', 'index.html'), 'ALT');
const r = await wait(s.jobs, s.jobs.submit(job()));
assert.equal(r.state, 'failed'); assert.notEqual(r.result, 'dev');
assert.equal(readFileSync(join(s.config.previewsRoot, 'demo', 'index.html'), 'utf8'), 'ALT');
});
test('Exit 137 im Build: Speicherlimit-Hinweis im Log, Build-Container mit 2g', async () => {
const s = setup({ files: { 'package.json': PKG() }, dockerImpl: (args) => ({ code: args.includes('build') ? 137 : 0 }) });
const r = await wait(s.jobs, s.jobs.submit(job({ mode: 'build' })));
assert.equal(r.state, 'failed');
assert.ok(r.log.some((l) => l.includes('Build am Speicherlimit abgebrochen (Exit 137)')));
const b = s.calls.find((c) => c.args.includes('preview-build-' + r.runId + '-build'));
assert.ok(b && b.args[b.args.indexOf('--memory') + 1] === '2g');
});
test('erzwungener Modus mit Erkennungsfehler ⇒ failed', async () => {
const s = setup({ files: { 'index.html': 'x' } });
const r = await wait(s.jobs, s.jobs.submit(job({ mode: 'build' })));