mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-21 04:10:47 +02:00
fix(gstack2): harden integrated runtime verification
This commit is contained in:
@@ -107,11 +107,33 @@ describe('gstack state external-effect CLI', () => {
|
||||
'state', 'effect', 'run_empty', 'silent.tool', '--', silent,
|
||||
], { cwd, env, stdout: out, stderr: err });
|
||||
expect(code).toBe(1);
|
||||
expect(err.value()).toContain('may have occurred');
|
||||
expect(JSON.parse(err.value())).toMatchObject({
|
||||
status: 'degraded',
|
||||
code: 'EXECUTION_EMPTY',
|
||||
evidence: ['exit code 0', 'stdout and stderr were empty'],
|
||||
});
|
||||
expect(out.value()).not.toContain('"status":"success"');
|
||||
const retryError = sink();
|
||||
expect(await main([
|
||||
'state', 'effect', 'run_empty', 'silent.tool', '--', silent,
|
||||
], { cwd, env, stdout: out, stderr: err })).toBe(1);
|
||||
expect(err.value()).toContain('was already claimed');
|
||||
], { cwd, env, stdout: out, stderr: retryError })).toBe(1);
|
||||
expect(retryError.value()).toContain('was already claimed');
|
||||
});
|
||||
|
||||
test('a nonzero command returns a structured failed result', async () => {
|
||||
const { cwd, env } = await fixture();
|
||||
const out = sink();
|
||||
const err = sink();
|
||||
await main(['state', 'begin', 'ship', '--run-id', 'run_failed'], { cwd, env, stdout: out, stderr: err });
|
||||
const code = await main([
|
||||
'state', 'effect', 'run_failed', 'failed.tool', '--', process.execPath, '-e', 'process.exit(7)',
|
||||
], { cwd, env, stdout: out, stderr: err });
|
||||
expect(code).toBe(1);
|
||||
expect(JSON.parse(err.value())).toMatchObject({
|
||||
status: 'failed',
|
||||
code: 'EXECUTION_FAILED',
|
||||
evidence: ['exit code 7'],
|
||||
data: { exitCode: 7 },
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user