From 481bf3fe3a48957a4d532bea3bbf6c5b617ae239 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 17 Sep 2021 00:24:14 +0800 Subject: [PATCH] vjudge: add state check --- packages/vjudge/package.json | 2 +- packages/vjudge/src/providers/luogu.ts | 32 ++++++++++++++------------ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/vjudge/package.json b/packages/vjudge/package.json index 965cd4e2..bf45e6ec 100644 --- a/packages/vjudge/package.json +++ b/packages/vjudge/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/vjudge", - "version": "1.3.2", + "version": "1.3.3", "description": "Submit problems to remote oj", "main": "package.json", "repository": "https://github.com/hydro-dev/Hydro.git", diff --git a/packages/vjudge/src/providers/luogu.ts b/packages/vjudge/src/providers/luogu.ts index 4ecbe4c4..ed55edb7 100644 --- a/packages/vjudge/src/providers/luogu.ts +++ b/packages/vjudge/src/providers/luogu.ts @@ -136,21 +136,23 @@ export default class LuoguProvider implements IBasicProvider { logger.info('Fetched with length', JSON.stringify(body).length); const total = flattenDeep(body.currentData.testCaseGroup).length; // TODO sorted - for (const subtask of data.detail?.judgeResult?.subtasks || []) { - for (const cid of Object.keys(subtask.testCases)) { - if (done[`${subtask.id}.${cid}`]) continue; - done[`${subtask.id}.${cid}`] = true; - const testcase = subtask.testCases[cid]; - await next({ - status: STATUS.STATUS_JUDGING, - case: { - status: STATUS_MAP[testcase.status], - time: testcase.time, - memory: testcase.memory, - message: testcase.description, - }, - progress: (Object.keys(done).length / total) * 100, - }); + if (data.detail.judgeResult) { + for (const subtask of data.detail.judgeResult?.subtasks || []) { + for (const cid of Object.keys(subtask.testCases)) { + if (done[`${subtask.id}.${cid}`]) continue; + done[`${subtask.id}.${cid}`] = true; + const testcase = subtask.testCases[cid]; + await next({ + status: STATUS.STATUS_JUDGING, + case: { + status: STATUS_MAP[testcase.status], + time: testcase.time, + memory: testcase.memory, + message: testcase.description, + }, + progress: (Object.keys(done).length / total) * 100, + }); + } } } if (data.status < 2) continue;