From df6b0923f437f33ed0e69602303aeb2fce88f55f Mon Sep 17 00:00:00 2001 From: Nuvole Date: Tue, 12 Nov 2024 16:50:59 +0800 Subject: [PATCH] Revert "chore: remove redundant import & rename folder" This reverts commit 5a8ea67bc82d1a5e2c23666cb09d54244708b669. --- .../{processers => lib}/__init__.py | 0 .../{processers => lib}/repo.py | 0 .../{processers => lib}/task.py | 2 + tests/basic/task.json | 1327 +++++++++++++++++ tests/basic/task.toml | 119 ++ 5 files changed, 1448 insertions(+) rename joj3_config_generator/{processers => lib}/__init__.py (100%) rename joj3_config_generator/{processers => lib}/repo.py (100%) rename joj3_config_generator/{processers => lib}/task.py (99%) create mode 100644 tests/basic/task.json create mode 100644 tests/basic/task.toml diff --git a/joj3_config_generator/processers/__init__.py b/joj3_config_generator/lib/__init__.py similarity index 100% rename from joj3_config_generator/processers/__init__.py rename to joj3_config_generator/lib/__init__.py diff --git a/joj3_config_generator/processers/repo.py b/joj3_config_generator/lib/repo.py similarity index 100% rename from joj3_config_generator/processers/repo.py rename to joj3_config_generator/lib/repo.py diff --git a/joj3_config_generator/processers/task.py b/joj3_config_generator/lib/task.py similarity index 99% rename from joj3_config_generator/processers/task.py rename to joj3_config_generator/lib/task.py index 3ec6d02..c1ccdfc 100644 --- a/joj3_config_generator/processers/task.py +++ b/joj3_config_generator/lib/task.py @@ -1,6 +1,8 @@ import shlex from typing import Tuple +import rtoml + from joj3_config_generator.models import joj1, repo, result, task diff --git a/tests/basic/task.json b/tests/basic/task.json new file mode 100644 index 0000000..c15b691 --- /dev/null +++ b/tests/basic/task.json @@ -0,0 +1,1327 @@ +{ + "name": "h4 ex1", + "logPath": "h4-ex1.log", + "expireUnixTimestamp": 1728748740, + "stage": { + "sandboxExecServer": "172.17.0.1:5051", + "sandboxToken": "test", + "outputPath": "/tmp/joj3_result.json", + "stages": [ + { + "name": "healthcheck", + "group": "", + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "//repo-health-checker", + "-root=.", + "-repoSize=50.5", + "-meta=main.py", + "-meta=README.md", + "-checkFileSumList=-checkFileNameList=" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 4096, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 4096, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 4000000000, + "realCpuLimit": 0, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": { + "//tmp/repo-checker-lf3ranpy/repo-health-checker": { + "src": "//tmp/repo-checker-gd58j2qv/repo-health-checker", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + } + }, + "copyInCached": {}, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [] + } + }, + "parsers": [ + { + "name": "healthcheck", + "with": { + "score": 0, + "comment": "" + } + } + ] + }, + { + "name": "Compilation", + "group": null, + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "make.sh" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 128000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 180000000000, + "realCpuLimit": 0, + "clockLimit": 360000000000, + "memoryLimit": 4194304, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": { + "tools/make.sh": { + "src": "/home/tt/.config/joj/tools/make.sh", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "src/main.c": { + "src": "/home/tt/.config/joj/src/main.c", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "src/task.h": { + "src": "/home/tt/.config/joj/src/task.h", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "srcCMakelist.txt": { + "src": "/home/tt/.config/joj/srcCMakelist.txt", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + } + }, + "copyInCached": { + "tools/make.sh": "tools/make.sh", + "src/main.c": "src/main.c", + "src/task.h": "src/task.h", + "srcCMakelist.txt": "srcCMakelist.txt" + }, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [ + "driver", + "p2", + "p2-msan" + ], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [] + } + }, + "parsers": [ + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stderr" + ], + "showExitStatus": true, + "showRuntime": false, + "showMemory": false + } + }, + { + "name": "dummy", + "with": { + "comment": "\n\n### Details\n" + } + }, + { + "name": "result-status", + "with": { + "comment": "Congratulations! Your code compiled successfully." + } + } + ] + }, + { + "name": "File length check", + "group": null, + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "./file-length", + "500", + "400", + "*.c", + "*.h" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 4000000000, + "realCpuLimit": 0, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": { + "tools/file-length": { + "src": "/home/tt/.config/joj/tools/file-length", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + } + }, + "copyInCached": { + "tools/file-length": "tools/file-length" + }, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [] + } + }, + "parsers": [ + { + "name": "keyword", + "with": { + "match": [ + { + "keyword": [ + "max" + ], + "score": 50 + }, + { + "keyword": [ + "recommend" + ], + "score": 20 + } + ] + } + }, + { + "name": "dummy", + "with": { + "comment": "" + } + }, + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stderr" + ], + "showExitStatus": false, + "showRuntime": false, + "showMemory": false + } + } + ] + }, + { + "name": "Clang-tidy checks", + "group": null, + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "run-clang-tidy-18", + "-header-filter=.*", + "-quiet", + "-load=/usr/local/lib/libcodequality.so", + "-p", + "build" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 65000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 4000000000, + "realCpuLimit": 0, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": {}, + "copyInCached": {}, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [] + } + }, + "parsers": [ + { + "name": "clangtidy", + "with": { + "match": [ + { + "keyword": [ + "codequality-no-global-variables" + ], + "score": 10 + }, + { + "keyword": [ + "codequality-no-header-guard" + ], + "score": 10 + }, + { + "keyword": [ + "readability-function-size" + ], + "score": 50 + }, + { + "keyword": [ + "readability-duplicate-include" + ], + "score": 10 + }, + { + "keyword": [ + "readability-identifier-naming" + ], + "score": 5 + }, + { + "keyword": [ + "readability-redundant" + ], + "score": 5 + }, + { + "keyword": [ + "readability-misleading-indentation" + ], + "score": 10 + }, + { + "keyword": [ + "readability-misplaced-array-index" + ], + "score": 5 + }, + { + "keyword": [ + "cppcoreguidelines-init-variables" + ], + "score": 5 + }, + { + "keyword": [ + "bugprone-suspicious-string-compare" + ], + "score": 8 + }, + { + "keyword": [ + "google-global-names-in-headers" + ], + "score": 5 + }, + { + "keyword": [ + "clang-diagnostic" + ], + "score": 5 + }, + { + "keyword": [ + "clang-analyzer" + ], + "score": 5 + }, + { + "keyword": [ + "misc performance" + ], + "score": 5 + } + ] + } + }, + { + "name": "dummy", + "with": { + "comment": "\n\n### Details\n" + } + }, + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stdout" + ], + "showExitStatus": true, + "showRuntime": false, + "showMemory": false + } + } + ] + }, + { + "name": "Cppcheck check", + "group": null, + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "cppcheck", + "--template='{\"file\":\"{file}\",\"line\":{line},", + "\"column\":{column},", + "\"severity\":\"{severity}\",", + "\"message\":\"{message}\",", + "\"id\":\"{id}\"}'", + "--force", + "--enable=all", + "--quiet", + "./" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 65000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 4000000000, + "realCpuLimit": 0, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": {}, + "copyInCached": {}, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [] + } + }, + "parsers": [ + { + "name": "cppcheck", + "with": { + "match": [ + { + "keyword": [ + "error" + ], + "score": 20 + }, + { + "keyword": [ + "warning" + ], + "score": 10 + }, + { + "keyword": [ + "portability" + ], + "score": 15 + }, + { + "keyword": [ + "performance" + ], + "score": 15 + }, + { + "keyword": [ + "style" + ], + "score": 10 + } + ] + } + }, + { + "name": "dummy", + "with": { + "comment": "\n\n### Details\n" + } + }, + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stderr" + ], + "showExitStatus": true, + "showRuntime": false, + "showMemory": false + } + } + ] + }, + { + "name": "Cpplint check", + "group": null, + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "cpplint", + "--linelength=120", + "--filter=-legal,-readability/casting,-whitespace,-runtime/printf,-runtime/threadsafe_fn,-readability/todo,-build/include_subdir,-build/header_guard", + "--recursive", + "--exclude=build", + "." + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 65000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 4000000000, + "realCpuLimit": 0, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": {}, + "copyInCached": {}, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [] + } + }, + "parsers": [ + { + "name": "cpplint", + "with": { + "comment": "" + } + }, + { + "name": "dummy", + "with": { + "comment": "\n\n### Details\n" + } + }, + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stdout" + ], + "showExitStatus": true, + "showRuntime": false, + "showMemory": false + } + } + ] + }, + { + "name": "judge-base", + "group": "joj", + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "./driver", + "./mumsh" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 3000000000, + "realCpuLimit": 0, + "clockLimit": 6000000000, + "memoryLimit": 78643200, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": {}, + "copyInCached": {}, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [ + { + "args": null, + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": "/home/tt/.config/joj/judge-base/case4.in", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": null, + "stderr": null, + "cpuLimit": 30000000000, + "realCpuLimit": null, + "clockLimit": 60000000000, + "memoryLimit": 10485760, + "stackLimit": null, + "procLimit": 50, + "cpuRateLimit": null, + "cpuSetLimit": null, + "copyIn": null, + "copyInCached": null, + "copyInDir": null, + "copyOut": null, + "copyOutCached": null, + "copyOutMax": null, + "copyOutDir": null, + "tty": null, + "strictMemoryLimit": null, + "dataSegmentLimit": null, + "addressSpaceLimit": null + }, + { + "args": null, + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": "/home/tt/.config/joj/judge-base/case5.in", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": null, + "stderr": null, + "cpuLimit": 4000000000, + "realCpuLimit": null, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": null, + "procLimit": 50, + "cpuRateLimit": null, + "cpuSetLimit": null, + "copyIn": null, + "copyInCached": null, + "copyInDir": null, + "copyOut": null, + "copyOutCached": null, + "copyOutMax": null, + "copyOutDir": null, + "tty": null, + "strictMemoryLimit": null, + "dataSegmentLimit": null, + "addressSpaceLimit": null + }, + { + "args": null, + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": "/home/tt/.config/joj/judge-base/case8.in", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": null, + "stderr": null, + "cpuLimit": 4000000000, + "realCpuLimit": null, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": null, + "procLimit": 50, + "cpuRateLimit": null, + "cpuSetLimit": null, + "copyIn": null, + "copyInCached": null, + "copyInDir": null, + "copyOut": null, + "copyOutCached": null, + "copyOutMax": null, + "copyOutDir": null, + "tty": null, + "strictMemoryLimit": null, + "dataSegmentLimit": null, + "addressSpaceLimit": null + } + ] + } + }, + "parsers": [ + { + "name": "diff", + "with": { + "name": "diff", + "cases": [ + { + "outputs": [ + { + "score": 0, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/judge-base/case4.out", + "forceQuitOnDiff": true, + "alwaysHide": false, + "compareSpace": true + } + ] + }, + { + "outputs": [ + { + "score": 0, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/judge-base/case5.out", + "forceQuitOnDiff": true, + "alwaysHide": false, + "compareSpace": true + } + ] + }, + { + "outputs": [ + { + "score": 0, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/judge-base/case8.out", + "forceQuitOnDiff": true, + "alwaysHide": false, + "compareSpace": true + } + ] + } + ] + } + }, + { + "name": "dummy", + "with": { + "comment": "\n\n### Details\n" + } + }, + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stderr" + ], + "showExitStatus": true, + "showRuntime": true, + "showMemory": true + } + } + ] + }, + { + "name": "judge-msan", + "group": "joj", + "executor": { + "name": "sandbox", + "with": { + "default": { + "args": [ + "./driver", + "./mumsh-msan" + ], + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": null, + "content": "", + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": { + "src": null, + "content": null, + "fileId": null, + "name": "stdout", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stderr": { + "src": null, + "content": null, + "fileId": null, + "name": "stderr", + "max": 4000000000, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "cpuLimit": 10000000000, + "realCpuLimit": 0, + "clockLimit": 20000000000, + "memoryLimit": 524288000, + "stackLimit": 0, + "procLimit": 50, + "cpuRateLimit": 0, + "cpuSetLimit": "", + "copyIn": {}, + "copyInCached": {}, + "copyInDir": ".", + "copyOut": [], + "copyOutCached": [], + "copyOutMax": 0, + "copyOutDir": "", + "tty": false, + "strictMemoryLimit": false, + "dataSegmentLimit": false, + "addressSpaceLimit": false + }, + "cases": [ + { + "args": null, + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": "/home/tt/.config/joj/judge-msan/case4.in", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": null, + "stderr": null, + "cpuLimit": 30000000000, + "realCpuLimit": null, + "clockLimit": 60000000000, + "memoryLimit": 10485760, + "stackLimit": null, + "procLimit": 50, + "cpuRateLimit": null, + "cpuSetLimit": null, + "copyIn": null, + "copyInCached": null, + "copyInDir": null, + "copyOut": null, + "copyOutCached": null, + "copyOutMax": null, + "copyOutDir": null, + "tty": null, + "strictMemoryLimit": null, + "dataSegmentLimit": null, + "addressSpaceLimit": null + }, + { + "args": null, + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": "/home/tt/.config/joj/judge-msan/case5.in", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": null, + "stderr": null, + "cpuLimit": 4000000000, + "realCpuLimit": null, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": null, + "procLimit": 50, + "cpuRateLimit": null, + "cpuSetLimit": null, + "copyIn": null, + "copyInCached": null, + "copyInDir": null, + "copyOut": null, + "copyOutCached": null, + "copyOutMax": null, + "copyOutDir": null, + "tty": null, + "strictMemoryLimit": null, + "dataSegmentLimit": null, + "addressSpaceLimit": null + }, + { + "args": null, + "env": [ + "PATH=/usr/bin:/bin:/usr/local/bin" + ], + "stdin": { + "src": "/home/tt/.config/joj/judge-msan/case6.in", + "content": null, + "fileId": null, + "name": null, + "max": 4194304, + "symlink": null, + "streamIn": false, + "streamOut": false, + "pipe": false + }, + "stdout": null, + "stderr": null, + "cpuLimit": 4000000000, + "realCpuLimit": null, + "clockLimit": 8000000000, + "memoryLimit": 4194304, + "stackLimit": null, + "procLimit": 50, + "cpuRateLimit": null, + "cpuSetLimit": null, + "copyIn": null, + "copyInCached": null, + "copyInDir": null, + "copyOut": null, + "copyOutCached": null, + "copyOutMax": null, + "copyOutDir": null, + "tty": null, + "strictMemoryLimit": null, + "dataSegmentLimit": null, + "addressSpaceLimit": null + } + ] + } + }, + "parsers": [ + { + "name": "diff", + "with": { + "name": "diff", + "cases": [ + { + "outputs": [ + { + "score": 0, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/judge-msan/case4.out", + "forceQuitOnDiff": true, + "alwaysHide": false, + "compareSpace": true + } + ] + }, + { + "outputs": [ + { + "score": 0, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/judge-msan/case5.out", + "forceQuitOnDiff": true, + "alwaysHide": false, + "compareSpace": true + } + ] + }, + { + "outputs": [ + { + "score": 0, + "fileName": "stdout", + "answerPath": "/home/tt/.config/joj/judge-msan/case6.out", + "forceQuitOnDiff": true, + "alwaysHide": true, + "compareSpace": true + } + ] + } + ] + } + }, + { + "name": "dummy", + "with": { + "comment": "\n\n### Details\n" + } + }, + { + "name": "result-detail", + "with": { + "score": 0, + "comment": "", + "showFiles": [ + "stderr" + ], + "showExitStatus": true, + "showRuntime": true, + "showMemory": true + } + } + ] + } + ] + }, + "teapot": { + "logPath": "h4-ex1-joint-teapot-debug.log", + "scoreboardPath": "h4-ex1-scoreboard.csv", + "failedTablePath": "h4-ex1-failed-table.md", + "gradingRepoName": "Nuvole-joj", + "skipIssue": false, + "skipScoreboard": false, + "skipFailedTable": false + } +} diff --git a/tests/basic/task.toml b/tests/basic/task.toml new file mode 100644 index 0000000..ec4cdfc --- /dev/null +++ b/tests/basic/task.toml @@ -0,0 +1,119 @@ +# general task configuration +task="h4 ex1" # task name + +release.deadline = 2024-10-12 23:59:00+08:00 +release.stages = [ "compile" ] + +[[stages]] +name = "Compilation" +command = "make.sh" # eg. script running cmake commands +files.import = [ "tools/make.sh", "src/main.c", "src/task.h", "srcCMakelist.txt" ] +files.export = [ "driver", "p2", "p2-msan" ] +limit.cpu = 180 # p2 takes long to compile +limit.stderr = 128 + +# compile parsers +parsers = [ "result-detail", "dummy", "result-status" ] +result-status.comment = "Congratulations! Your code compiled successfully." +dummy.comment = "\n\n### Details\n" +result-detail.exitstatus = true +result-detail.stderr = true +result-detail.time = false +result-detail.mem = false + +[[stages]] +name = "File length check" +command = "./file-length 500 400 *.c *.h" # command to run +files.import = [ "tools/file-length" ] + +parsers = [ "keyword", "dummy", "result-detail" ] +keyword.keyword = [ "max", "recommend"] # keywords caught by corresponding JOJ plugin +keyword.weight = [ 50, 20 ] # weight of each keyword +result-detail.exitstatus = false +result-detail.stderr = true +result-detail.time = false +result-detail.mem = false + +[[stages]] +name = "Clang-tidy checks" +command = "run-clang-tidy-18 -header-filter=.* -quiet -load=/usr/local/lib/libcodequality.so -p build" +limit.stdout = 65 + +parsers = [ "clangtidy", "dummy", "result-detail" ] +clangtidy.keyword = [ "codequality-no-global-variables", "codequality-no-header-guard", "readability-function-size", "readability-duplicate-include", "readability-identifier-naming", "readability-redundant", "readability-misleading-indentation", "readability-misplaced-array-index", "cppcoreguidelines-init-variables", "bugprone-suspicious-string-compare", "google-global-names-in-headers", "clang-diagnostic", "clang-analyzer", "misc performance" ] +clangtidy.weight = [10, 10, 50, 10, 5, 5, 10, 5, 5, 8, 5, 5, 5, 5] +dummy.comment = "\n\n### Details\n" +result-detail.exitstatus = true +result-detail.stdout = true +result-detail.time = false +result-detail.mem = false + +[[stages]] +name = "Cppcheck check" +command = "cppcheck --template='{\"file\":\"{file}\",\"line\":{line}, \"column\":{column}, \"severity\":\"{severity}\", \"message\":\"{message}\", \"id\":\"{id}\"}' --force --enable=all --quiet ./" +limit.stderr = 65 + +parsers = [ "cppcheck", "dummy", "result-detail" ] +cppcheck.keyword = ["error", "warning", "portability", "performance", "style"] +cppcheck.weight = [20, 10, 15, 15, 10] +dummy.comment = "\n\n### Details\n" +result-detail.exitstatus = true +result-detail.stderr = true +result-detail.time = false +result-detail.mem = false + +[[stages]] +name = "Cpplint check" +command = "cpplint --linelength=120 --filter=-legal,-readability/casting,-whitespace,-runtime/printf,-runtime/threadsafe_fn,-readability/todo,-build/include_subdir,-build/header_guard --recursive --exclude=build ." +limit.stdout = 65 + +parsers = [ "cpplint", "dummy", "result-detail" ] +cpplint.keyword = [ "runtime", "readability", "build" ] +cpplint.weight = [ 10, 20, 15] +dummy.comment = "\n\n### Details\n" +result-detail.exitstatus = true +result-detail.stdout = true +result-detail.time = false +result-detail.mem = false + +[[stages]] +name = "judge-base" +command="./driver ./mumsh" +limit.cpu = 3 +limit.mem = 75 +score = 10 + +parsers = ["diff", "dummy", "result-detail"] +dummy.comment = "\n\n### Details\n" +result-detail.exitstatus = true +result-detail.stderr = true + +case4.score = 15 +case4.limit.cpu = 30 +case4.limit.mem = 10 +case4.limit.stdout = 8 + +case5.score = 25 + +case8.limit.stderr = 128 + +[[stages]] +name = "judge-msan" +command="./driver ./mumsh-msan" +limit.cpu = 10 # default cpu limit (in sec) for each test case +limit.mem = 500 # set default mem limit (in MB) for all OJ test cases +score = 10 +skip = ["case0", "case11"] + +parsers = ["diff", "dummy", "result-detail"] +dummy.comment = "\n\n### Details\n" +result-detail.exitstatus = true +result-detail.stderr = true + +case4.score = 15 +case4.limit.cpu = 30 +case4.limit.mem = 10 + +case5.diff.output.ignorespaces = false + +case6.diff.output.hide = true