From 26df677b3688db16cd825f01c0b1a46139b531b9 Mon Sep 17 00:00:00 2001 From: jon-lee Date: Wed, 21 May 2025 22:36:12 +0800 Subject: [PATCH] fix(diff): cases not properly detected --- joj3_config_generator/transformers/task.py | 27 ++-- tests/convert/basic/task.json | 44 +----- tests/convert/diff/task.json | 172 ++++++++++----------- tests/convert/diff/task2/case7.out | 0 tests/convert/diff/task2/case8.in | 0 5 files changed, 105 insertions(+), 138 deletions(-) create mode 100644 tests/convert/diff/task2/case7.out create mode 100644 tests/convert/diff/task2/case8.in diff --git a/joj3_config_generator/transformers/task.py b/joj3_config_generator/transformers/task.py index b947247..4e9bf7e 100644 --- a/joj3_config_generator/transformers/task.py +++ b/joj3_config_generator/transformers/task.py @@ -166,19 +166,25 @@ def fix_diff( task_path: Path, ) -> None: base_dir = JOJ3_CONFIG_ROOT / task_path.parent - valid_cases = ( - (case, task_stage.cases[case]) - for case in task_stage.cases - if case not in task_stage.skip - ) + # all intended testcases that is detected testcases = get_testcases(task_root, task_path) + # all testcases that is not specified in the toml config default_cases = sorted( - [ - case - for case in testcases - if any(case.endswith(other) for other in task_stage.cases) - ] + testcases.difference( + [ + casei + for casei in testcases + if any(casei.endswith(casej) for casej in task_stage.cases) + ] + ) ) + # those in toml config that is not skiped + valid_cases = [ + (casej, task_stage.cases[casei]) + for casei in task_stage.cases + for casej in testcases + if (casei not in task_stage.skip and casej.endswith(casei)) + ] stage_cases = [] parser_cases = [] for case, case_stage in valid_cases: @@ -216,6 +222,7 @@ def fix_diff( ] ) parser_cases.append(parser_case) + for case in default_cases: cmd = result.OptionalCmd( stdin=result.LocalFile(src=str(base_dir / f"{case}.in")) diff --git a/tests/convert/basic/task.json b/tests/convert/basic/task.json index 035c7f7..9f7929d 100644 --- a/tests/convert/basic/task.json +++ b/tests/convert/basic/task.json @@ -705,22 +705,7 @@ "dataSegmentLimit": false, "addressSpaceLimit": false }, - "cases": [ - { - "stdin": { - "src": "/home/tt/.config/joj/basic/case0.in" - }, - "cpuLimit": 500000000, - "clockLimit": 1000000000, - "memoryLimit": 5242880 - }, - { - "stdin": { - "src": "/home/tt/.config/joj/basic/case1.in" - }, - "memoryLimit": 5242880 - } - ] + "cases": [] } }, "parsers": [ @@ -728,32 +713,7 @@ "name": "diff", "with": { "name": "diff", - "cases": [ - { - "outputs": [ - { - "score": 5, - "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/basic/case0.out", - "forceQuitOnDiff": false, - "alwaysHide": false, - "compareSpace": false - } - ] - }, - { - "outputs": [ - { - "score": 5, - "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/basic/case1.out", - "forceQuitOnDiff": false, - "alwaysHide": false, - "compareSpace": false - } - ] - } - ] + "cases": [] } }, { diff --git a/tests/convert/diff/task.json b/tests/convert/diff/task.json index a7d25c7..9c15abd 100644 --- a/tests/convert/diff/task.json +++ b/tests/convert/diff/task.json @@ -84,50 +84,50 @@ }, { "stdin": { - "src": "/home/tt/.config/joj/diff/case11.in" + "src": "/home/tt/.config/joj/diff/task1/subtask1/case11.in" }, "memoryLimit": 268435456 }, - { - "stdin": { - "src": "/home/tt/.config/joj/diff/case10.in" - }, - "memoryLimit": 268435456 - }, - { - "stdin": { - "src": "/home/tt/.config/joj/diff/case5.in" - }, - "memoryLimit": 268435456 - }, - { - "stdin": { - "src": "/home/tt/.config/joj/diff/case0.in" - } - }, - { - "stdin": { - "src": "/home/tt/.config/joj/diff/case1.in" - } - }, - { - "stdin": { - "src": "/home/tt/.config/joj/diff/case9.in" - } - }, - { - "stdin": { - "src": "/home/tt/.config/joj/diff/task1/case5.in" - } - }, { "stdin": { "src": "/home/tt/.config/joj/diff/task1/subtask1/case10.in" + }, + "memoryLimit": 268435456 + }, + { + "stdin": { + "src": "/home/tt/.config/joj/diff/task1/case5.in" + }, + "memoryLimit": 268435456 + }, + { + "stdin": { + "src": "/home/tt/.config/joj/diff/case2.in" } }, { "stdin": { - "src": "/home/tt/.config/joj/diff/task1/subtask1/case11.in" + "src": "/home/tt/.config/joj/diff/case3.in" + } + }, + { + "stdin": { + "src": "/home/tt/.config/joj/diff/task1/case4.in" + } + }, + { + "stdin": { + "src": "/home/tt/.config/joj/diff/task2/case6.in" + } + }, + { + "stdin": { + "src": "/home/tt/.config/joj/diff/task2/case7.in" + } + }, + { + "stdin": { + "src": "/home/tt/.config/joj/diff/task2/case8.in" } } ] @@ -180,7 +180,7 @@ { "score": 92321, "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/case11.out", + "answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case11.out", "forceQuitOnDiff": false, "alwaysHide": false, "compareSpace": false @@ -192,7 +192,7 @@ { "score": 823131, "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/case10.out", + "answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case10.out", "forceQuitOnDiff": false, "alwaysHide": false, "compareSpace": false @@ -204,54 +204,6 @@ { "score": 2590, "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/case5.out", - "forceQuitOnDiff": false, - "alwaysHide": false, - "compareSpace": false - } - ] - }, - { - "outputs": [ - { - "score": 5, - "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/case0.out", - "forceQuitOnDiff": false, - "alwaysHide": false, - "compareSpace": false - } - ] - }, - { - "outputs": [ - { - "score": 5, - "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/case1.out", - "forceQuitOnDiff": false, - "alwaysHide": false, - "compareSpace": false - } - ] - }, - { - "outputs": [ - { - "score": 5, - "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/case9.out", - "forceQuitOnDiff": false, - "alwaysHide": false, - "compareSpace": false - } - ] - }, - { - "outputs": [ - { - "score": 5, - "fileName": "stdout", "answerPath": "/home/tt/.config/joj/diff/task1/case5.out", "forceQuitOnDiff": false, "alwaysHide": false, @@ -264,7 +216,7 @@ { "score": 5, "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case10.out", + "answerPath": "/home/tt/.config/joj/diff/case2.out", "forceQuitOnDiff": false, "alwaysHide": false, "compareSpace": false @@ -276,7 +228,55 @@ { "score": 5, "fileName": "stdout", - "answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case11.out", + "answerPath": "/home/tt/.config/joj/diff/case3.out", + "forceQuitOnDiff": false, + "alwaysHide": false, + "compareSpace": false + } + ] + }, + { + "outputs": [ + { + "score": 5, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/diff/task1/case4.out", + "forceQuitOnDiff": false, + "alwaysHide": false, + "compareSpace": false + } + ] + }, + { + "outputs": [ + { + "score": 5, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/diff/task2/case6.out", + "forceQuitOnDiff": false, + "alwaysHide": false, + "compareSpace": false + } + ] + }, + { + "outputs": [ + { + "score": 5, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/diff/task2/case7.out", + "forceQuitOnDiff": false, + "alwaysHide": false, + "compareSpace": false + } + ] + }, + { + "outputs": [ + { + "score": 5, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/diff/task2/case8.out", "forceQuitOnDiff": false, "alwaysHide": false, "compareSpace": false diff --git a/tests/convert/diff/task2/case7.out b/tests/convert/diff/task2/case7.out new file mode 100644 index 0000000..e69de29 diff --git a/tests/convert/diff/task2/case8.in b/tests/convert/diff/task2/case8.in new file mode 100644 index 0000000..e69de29