From 0ad2a172d55662d79dd55f2f80c5411c67458b69 Mon Sep 17 00:00:00 2001 From: panda Date: Mon, 15 Jul 2024 14:11:29 +0800 Subject: [PATCH] judge: support fileIO on pretest (#840) --- packages/hydrojudge/src/judge/run.ts | 1 + packages/hydrojudge/src/sandbox.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/hydrojudge/src/judge/run.ts b/packages/hydrojudge/src/judge/run.ts index b677137fc..6e487f83d 100644 --- a/packages/hydrojudge/src/judge/run.ts +++ b/packages/hydrojudge/src/judge/run.ts @@ -18,6 +18,7 @@ export const judge = async (ctx: JudgeTask) => { // Allow 2x limits for better debugging time: parseTimeMS(ctx.config.time || '1s') * 2, memory: parseMemoryMB(ctx.config.memory || '128m'), + filename: ctx.config.filename, addressSpaceLimit: address_space_limit, processLimit: process_limit, }, diff --git a/packages/hydrojudge/src/sandbox.ts b/packages/hydrojudge/src/sandbox.ts index e91d5ccc6..9b00b523f 100644 --- a/packages/hydrojudge/src/sandbox.ts +++ b/packages/hydrojudge/src/sandbox.ts @@ -74,7 +74,7 @@ function parseArgs(execute: string): string[] { function proc(params: Parameter): Cmd { const copyOut = supportOptional - ? params.copyOut + ? (params.copyOut || []) : (params.copyOut || []).map((i) => (i.endsWith('?') ? i.substring(0, i.length - 1) : i)); const stdioLimit = parseMemoryMB(getConfig('stdio_size')); const stdioSize = params.cacheStdoutAndStderr ? stdioLimit : 4; @@ -82,7 +82,7 @@ function proc(params: Parameter): Cmd { if (params.cacheStdoutAndStderr) { copyOutCached.push('stdout', 'stderr'); if (params.filename) copyOutCached.push(`${params.filename}.out?`); - } + } else if (params.filename) copyOut.push(`${params.filename}.out${supportOptional ? '?' : ''}`); const copyIn = { ...(params.copyIn || {}) }; const stdin = params.stdin || { content: '' }; if (params.filename) copyIn[`${params.filename}.in`] = stdin;