From 510eff9dbb8d588b5a1f0d7bfd8856cfe20342d3 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 22 Nov 2022 21:40:21 +0800 Subject: [PATCH] judge: capture lemon checker error --- packages/hydrojudge/src/checkers.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/hydrojudge/src/checkers.ts b/packages/hydrojudge/src/checkers.ts index 01b190ab2..083812a57 100644 --- a/packages/hydrojudge/src/checkers.ts +++ b/packages/hydrojudge/src/checkers.ts @@ -119,21 +119,27 @@ const checkers: Record = new Proxy({ * argv[6]:输出错误报告的文件 */ async lemon(config) { - const { files } = await run(`${config.execute} input usrout answer ${config.score} score message`, { + const { files, code } = await run(`${config.execute} input usrout answer ${config.score} score message`, { copyIn: { usrout: config.user_stdout, answer: config.output, input: config.input, ...config.copyIn, }, - copyOut: ['score', 'message'], + copyOut: ['score?', 'message?'], env: config.env, }); - const { message } = files; - const score = parseInt(files.score, 10); + if (code) { + return { + score: 0, + message: `Checker returned with status ${code}`, + status: STATUS.STATUS_SYSTEM_ERROR, + }; + } + const score = Math.floor(+files.score) || 0; return { score, - message, + message: files.message, status: score === config.score ? STATUS.STATUS_ACCEPTED : STATUS.STATUS_WRONG_ANSWER,