From 9395ba1a7ab9af085a0277fa99f04a695ec58716 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 7 Mar 2021 21:09:22 +0800 Subject: [PATCH] judge: fix syzoj checker --- packages/hydrojudge/src/checkers.ts | 4 ++-- packages/hydrojudge/src/judge/default.ts | 8 ++++++-- packages/hydrooj/package.json | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/hydrojudge/src/checkers.ts b/packages/hydrojudge/src/checkers.ts index 37098f9be..d69c47a7e 100644 --- a/packages/hydrojudge/src/checkers.ts +++ b/packages/hydrojudge/src/checkers.ts @@ -155,7 +155,7 @@ const checkers: Record = { * input:输入 * user_out:选手输出 * answer:标准输出 - * code:选手代码 + * code:选手代码 (not impl) * stdout:输出最终得分 * stderr:输出错误报告 */ @@ -166,7 +166,7 @@ const checkers: Record = { input: { src: config.input }, user_out: { src: config.user_stdout }, answer: { src: config.output }, - code: { content: config.code }, + code: { content: '' }, ...config.copyIn, }, }); diff --git a/packages/hydrojudge/src/judge/default.ts b/packages/hydrojudge/src/judge/default.ts index c2451bb90..7fbdf154d 100644 --- a/packages/hydrojudge/src/judge/default.ts +++ b/packages/hydrojudge/src/judge/default.ts @@ -21,7 +21,8 @@ function judgeCase(c, sid) { return async (ctx, ctxSubtask) => { if ((ctxSubtask.subtask.type === 'min' && !ctxSubtask.score) || (ctxSubtask.subtask.type === 'max' && ctxSubtask.score === ctxSubtask.subtask.score) - || (ctxSubtask.subtask.if && ctx.failed[sid])) { + || (ctxSubtask.subtask.if && ctx.failed[sid]) + || ctx.errored) { ctx.next({ case: { status: STATUS.STATUS_CANCELED, @@ -113,7 +114,10 @@ function judgeSubtask(subtask, sid) { for (const cid in subtask.cases) { cases.push(ctx.queue.add(() => judgeCase(subtask.cases[cid], sid)(ctx, ctxSubtask))); } - await Promise.all(cases); + await Promise.all(cases).catch((e) => { + ctx.errored = true; + throw e; + }); ctx.total_status = Math.max(ctx.total_status, ctxSubtask.status); if (ctx.total_status !== STATUS.STATUS_ACCEPTED) ctx.failed[sid] = true; return ctxSubtask.score; diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 18bf8ec6c..c18cb90f0 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.20.3", + "version": "2.20.4", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts",