diff --git a/packages/hydrojudge/src/judge/default.ts b/packages/hydrojudge/src/judge/default.ts index 35b9698e..228db3d4 100644 --- a/packages/hydrojudge/src/judge/default.ts +++ b/packages/hydrojudge/src/judge/default.ts @@ -53,9 +53,7 @@ function judgeCase(c: NormalizedCase) { if (code < 32) message = signals[code]; else message = { message: 'Your program returned {0}.', params: [code] }; } - await Promise.all( - Object.values(res.fileIds).map((id) => del(id)), - ).catch(() => { /* Ignore file doesn't exist */ }); + await Promise.allSettled(Object.values(res.fileIds).map((id) => del(id))); if (runner && ctx.rerun && c.time <= 5000 && status === STATUS.STATUS_TIME_LIMIT_EXCEEDED) { ctx.rerun--; return await runner(ctx, ctxSubtask); diff --git a/packages/hydrojudge/src/sandbox.ts b/packages/hydrojudge/src/sandbox.ts index d59c4c3c..afe3b20c 100644 --- a/packages/hydrojudge/src/sandbox.ts +++ b/packages/hydrojudge/src/sandbox.ts @@ -179,6 +179,10 @@ export async function del(fileId: string) { await client.deleteFile(fileId); } +export async function get(fileId: string) { + return await client.getFile(fileId); +} + export async function run(execute: string, params?: Parameter): Promise { let result: SandboxResult; try { diff --git a/packages/hydrojudge/src/sandbox/client.ts b/packages/hydrojudge/src/sandbox/client.ts index a3461804..d7f7b5f0 100644 --- a/packages/hydrojudge/src/sandbox/client.ts +++ b/packages/hydrojudge/src/sandbox/client.ts @@ -9,7 +9,7 @@ const client = new Proxy({ return superagent.post(`${url}/run`).send(req).then((res) => res.body); }, getFile(fileId: string): Promise { - return superagent.get(`${url}/file/${fileId}`).then((res) => res.body); + return superagent.get(`${url}/file/${fileId}`).responseType('arraybuffer').then((res) => res.body); }, deleteFile(fileId: string): Promise { return superagent.delete(`${url}/file/${fileId}`).then((res) => res.body);