fix(diff): bugs in auto detect cases (#14)
All checks were successful
build / build (push) Successful in 2m5s

- fix original logic issue of cases generation (originally there is duplication on cases, e.g. `case5`, `task1/case5`)
- fix the issue that without any specification there is no cases input and output in `diff` stage

Co-authored-by: Boming Zhang <bomingzh@sjtu.edu.cn>
Reviewed-on: #14
Reviewed-by: 张泊明518370910136 <bomingzh@sjtu.edu.cn>
Co-authored-by: jon-lee <jon-lee@sjtu.edu.cn>
Co-committed-by: jon-lee <jon-lee@sjtu.edu.cn>
This commit is contained in:
李衍志523370910113 2025-05-22 01:34:01 +08:00 committed by 张泊明518370910136
parent 01759efb7b
commit 6375a37069
6 changed files with 112 additions and 143 deletions

View File

@ -166,19 +166,25 @@ def fix_diff(
task_path: Path, task_path: Path,
) -> None: ) -> None:
base_dir = JOJ3_CONFIG_ROOT / task_path.parent base_dir = JOJ3_CONFIG_ROOT / task_path.parent
valid_cases = ( # all intended testcases that is detected
(case, task_stage.cases[case])
for case in task_stage.cases
if case not in task_stage.skip
)
testcases = get_testcases(task_root, task_path) testcases = get_testcases(task_root, task_path)
# all testcases that is not specified in the toml config
default_cases = sorted( default_cases = sorted(
testcases.difference(
[ [
case casei
for case in testcases for casei in testcases
if any(case.endswith(other) for other in task_stage.cases) 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 = [] stage_cases = []
parser_cases = [] parser_cases = []
for case, case_stage in valid_cases: for case, case_stage in valid_cases:

View File

@ -719,22 +719,7 @@
"dataSegmentLimit": false, "dataSegmentLimit": false,
"addressSpaceLimit": false "addressSpaceLimit": false
}, },
"cases": [ "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
}
]
} }
}, },
"parsers": [ "parsers": [
@ -742,32 +727,7 @@
"name": "diff", "name": "diff",
"with": { "with": {
"name": "diff", "name": "diff",
"cases": [ "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
}
]
}
]
} }
}, },
{ {

View File

@ -65,12 +65,18 @@
}, },
"cases": [ "cases": [
{ {
"args": [
"./h7/build/ex2"
],
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/diff/case0.in" "src": "/home/tt/.config/joj/diff/case0.in"
}, },
"memoryLimit": 2097152 "memoryLimit": 2097152
}, },
{ {
"args": [
"./h7/build/ex2"
],
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/diff/case1.in" "src": "/home/tt/.config/joj/diff/case1.in"
}, },
@ -86,50 +92,50 @@
}, },
{ {
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/diff/case11.in" "src": "/home/tt/.config/joj/diff/task1/subtask1/case11.in"
}, },
"memoryLimit": 268435456 "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": { "stdin": {
"src": "/home/tt/.config/joj/diff/task1/subtask1/case10.in" "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": { "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, "score": 92321,
"fileName": "stdout", "fileName": "stdout",
"answerPath": "/home/tt/.config/joj/diff/case11.out", "answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case11.out",
"forceQuitOnDiff": false, "forceQuitOnDiff": false,
"alwaysHide": false, "alwaysHide": false,
"compareSpace": false "compareSpace": false
@ -194,7 +200,7 @@
{ {
"score": 823131, "score": 823131,
"fileName": "stdout", "fileName": "stdout",
"answerPath": "/home/tt/.config/joj/diff/case10.out", "answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case10.out",
"forceQuitOnDiff": false, "forceQuitOnDiff": false,
"alwaysHide": false, "alwaysHide": false,
"compareSpace": false "compareSpace": false
@ -206,54 +212,6 @@
{ {
"score": 2590, "score": 2590,
"fileName": "stdout", "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", "answerPath": "/home/tt/.config/joj/diff/task1/case5.out",
"forceQuitOnDiff": false, "forceQuitOnDiff": false,
"alwaysHide": false, "alwaysHide": false,
@ -266,7 +224,7 @@
{ {
"score": 5, "score": 5,
"fileName": "stdout", "fileName": "stdout",
"answerPath": "/home/tt/.config/joj/diff/task1/subtask1/case10.out", "answerPath": "/home/tt/.config/joj/diff/case2.out",
"forceQuitOnDiff": false, "forceQuitOnDiff": false,
"alwaysHide": false, "alwaysHide": false,
"compareSpace": false "compareSpace": false
@ -278,7 +236,55 @@
{ {
"score": 5, "score": 5,
"fileName": "stdout", "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, "forceQuitOnDiff": false,
"alwaysHide": false, "alwaysHide": false,
"compareSpace": false "compareSpace": false

View File

@ -19,17 +19,14 @@ case0.diff.output.score = 5
case0.limit.cpu = "1s" case0.limit.cpu = "1s"
case0.limit.mem = "2m" case0.limit.mem = "2m"
case0.diff.output.ignore_spaces = true case0.diff.output.ignore_spaces = true
#case0.limit.stdout = 8 case0.command = "./h7/build/ex2"
#case0.command = "./h7/build/ex2"
case0.in = "case0.in" case0.in = "case0.in"
case1.diff.output.score = 123214122421 case1.diff.output.score = 123214122421
case1.limit.cpu = "2s" case1.limit.cpu = "2s"
case1.limit.mem = "4m" case1.limit.mem = "4m"
case1.diff.output.ignore_spaces = true case1.diff.output.ignore_spaces = true
#case1.limit.stdout = 8 case1.command = "./h7/build/ex2"
#case1.command = "./h7/build/ex2"
case1.in = "case1.in"
case9.diff.output.score = 1232131 case9.diff.output.score = 1232131

View File

View File