This commit is contained in:
parent
a828716fd8
commit
f7fad87307
|
@ -152,55 +152,42 @@ def fix_file(file_parser_config: task.ParserFile, file_parser: result.Parser) ->
|
||||||
def fix_diff(
|
def fix_diff(
|
||||||
task_stage: task.Stage,
|
task_stage: task.Stage,
|
||||||
diff_parser_config: result.Parser,
|
diff_parser_config: result.Parser,
|
||||||
diff_executor: result.Executor,
|
diff_executor_config: result.Executor,
|
||||||
base_dir: Path,
|
base_dir: Path,
|
||||||
) -> None:
|
) -> None:
|
||||||
skip = task_stage.skip
|
valid_cases = (
|
||||||
cases = task_stage.cases
|
(case, task_stage.cases[case])
|
||||||
finalized_cases = [case for case in cases if case not in skip]
|
for case in task_stage.cases
|
||||||
|
if case not in task_stage.skip and case in task_stage.cases
|
||||||
|
)
|
||||||
stage_cases = []
|
stage_cases = []
|
||||||
parser_cases = []
|
parser_cases = []
|
||||||
|
for case, case_stage in valid_cases:
|
||||||
for case in finalized_cases:
|
|
||||||
case_stage = task_stage.cases.get(case) if task_stage.cases else None
|
|
||||||
if not case_stage:
|
|
||||||
continue
|
|
||||||
|
|
||||||
cpu_limit = case_stage.limit.cpu
|
|
||||||
clock_limit = 2 * case_stage.limit.cpu
|
|
||||||
memory_limit = case_stage.limit.mem
|
|
||||||
command = case_stage.command
|
|
||||||
stdin = case_stage.in_ if case_stage.in_ != "" else f"{case}.in"
|
|
||||||
stdout = case_stage.out_ if case_stage.out_ != "" else f"{case}.out"
|
|
||||||
|
|
||||||
stage_cases.append(
|
stage_cases.append(
|
||||||
result.OptionalCmd(
|
result.OptionalCmd(
|
||||||
stdin=result.LocalFile(
|
stdin=result.LocalFile(
|
||||||
src=str(base_dir / stdin),
|
src=str(base_dir / (case_stage.in_ or f"{case}.in"))
|
||||||
),
|
),
|
||||||
args=shlex.split(command) if command else None,
|
args=shlex.split(case_stage.command) if case_stage.command else None,
|
||||||
cpu_limit=cpu_limit,
|
cpu_limit=case_stage.limit.cpu,
|
||||||
clock_limit=clock_limit,
|
clock_limit=2 * case_stage.limit.cpu,
|
||||||
memory_limit=memory_limit,
|
memory_limit=case_stage.limit.mem,
|
||||||
proc_limit=50,
|
proc_limit=50,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
diff_output = case_stage.diff.output
|
|
||||||
parser_cases.append(
|
parser_cases.append(
|
||||||
result.DiffCasesConfig(
|
result.DiffCasesConfig(
|
||||||
outputs=[
|
outputs=[
|
||||||
result.DiffOutputConfig(
|
result.DiffOutputConfig(
|
||||||
score=diff_output.score,
|
score=case_stage.diff.output.score,
|
||||||
file_name="stdout",
|
file_name="stdout",
|
||||||
answer_path=str(base_dir / stdout),
|
answer_path=str(base_dir / (case_stage.out_ or f"{case}.out")),
|
||||||
force_quit_on_diff=diff_output.force_quit,
|
force_quit_on_diff=case_stage.diff.output.force_quit,
|
||||||
always_hide=diff_output.hide,
|
always_hide=case_stage.diff.output.hide,
|
||||||
compare_space=not diff_output.ignore_spaces,
|
compare_space=not case_stage.diff.output.ignore_spaces,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
diff_executor_config.with_.cases = stage_cases
|
||||||
diff_executor.with_.cases = stage_cases
|
|
||||||
diff_parser_config.with_ = result.DiffConfig(name="diff", cases=parser_cases)
|
diff_parser_config.with_ = result.DiffConfig(name="diff", cases=parser_cases)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user