fix(gateway): bound git scenario preview fan-out
This commit is contained in:
@@ -62,6 +62,9 @@ const runGit = (args: string[]): Promise<{ ok: boolean; output: string }> =>
|
||||
child.stderr.on('data', (chunk) => {
|
||||
output += chunk.toString();
|
||||
});
|
||||
child.on('error', (error) => {
|
||||
resolve({ ok: false, output: `${output}${error.message}` });
|
||||
});
|
||||
child.on('close', (code) => {
|
||||
resolve({ ok: code === 0, output });
|
||||
});
|
||||
@@ -308,7 +311,10 @@ export const listScenarioPreviews = async (options?: { gitRef?: string | null })
|
||||
return cached.data;
|
||||
}
|
||||
const ids = await listScenarioIdsFromGit(commitSha);
|
||||
const previews = await Promise.all(ids.map((id) => buildScenarioPreviewFromGit(commitSha, id)));
|
||||
const previews: ScenarioPreview[] = [];
|
||||
for (const id of ids) {
|
||||
previews.push(await buildScenarioPreviewFromGit(commitSha, id));
|
||||
}
|
||||
previewCache.set(cacheKey, {
|
||||
loadedAt: Date.now(),
|
||||
data: previews,
|
||||
|
||||
@@ -15,4 +15,14 @@ describe('scenarioCatalog git ref support', () => {
|
||||
const sorted = [...ids].sort((a, b) => a - b);
|
||||
expect(ids).toEqual(sorted);
|
||||
});
|
||||
|
||||
it('rejects without crashing when git cannot be spawned', async () => {
|
||||
const originalPath = process.env.PATH;
|
||||
process.env.PATH = '/nonexistent';
|
||||
try {
|
||||
await expect(resolveGitCommitSha('HEAD')).rejects.toThrow('git ref not found.');
|
||||
} finally {
|
||||
process.env.PATH = originalPath;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user