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,