diff --git a/joj3_config_generator/transformers/task.py b/joj3_config_generator/transformers/task.py index b947247..e1b98ca 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: diff --git a/tests/convert/basic/task.json b/tests/convert/basic/task.json index 9ca4676..82e35e4 100644 --- a/tests/convert/basic/task.json +++ b/tests/convert/basic/task.json @@ -719,22 +719,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": [ @@ -742,32 +727,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 4bdd573..63a4607 100644 --- a/tests/convert/diff/task.json +++ b/tests/convert/diff/task.json @@ -65,12 +65,18 @@ }, "cases": [ { + "args": [ + "./h7/build/ex2" + ], "stdin": { "src": "/home/tt/.config/joj/diff/case0.in" }, "memoryLimit": 2097152 }, { + "args": [ + "./h7/build/ex2" + ], "stdin": { "src": "/home/tt/.config/joj/diff/case1.in" }, @@ -86,50 +92,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" } } ] @@ -182,7 +188,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 @@ -194,7 +200,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 @@ -206,54 +212,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, @@ -266,7 +224,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 @@ -278,7 +236,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/task.toml b/tests/convert/diff/task.toml index f4f283d..4272f97 100644 --- a/tests/convert/diff/task.toml +++ b/tests/convert/diff/task.toml @@ -19,17 +19,14 @@ case0.diff.output.score = 5 case0.limit.cpu = "1s" case0.limit.mem = "2m" case0.diff.output.ignore_spaces = true -#case0.limit.stdout = 8 -#case0.command = "./h7/build/ex2" +case0.command = "./h7/build/ex2" case0.in = "case0.in" case1.diff.output.score = 123214122421 case1.limit.cpu = "2s" case1.limit.mem = "4m" case1.diff.output.ignore_spaces = true -#case1.limit.stdout = 8 -#case1.command = "./h7/build/ex2" -case1.in = "case1.in" +case1.command = "./h7/build/ex2" case9.diff.output.score = 1232131 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