Merge remote-tracking branch 'refs/remotes/origin/dev' into dev
This commit is contained in:
commit
26f5deb203
|
@ -1,19 +1,20 @@
|
||||||
from typing import List
|
from joj3_config_generator.models import (
|
||||||
|
Cmd,
|
||||||
from joj3_config_generator.lib.repo import getHealthcheckConfig, getTeapotConfig
|
CmdFile,
|
||||||
from joj3_config_generator.lib.task import (
|
ExecutorConfig,
|
||||||
fix_comment,
|
ExecutorWithConfig,
|
||||||
fix_diff,
|
ParserConfig,
|
||||||
fix_keyword,
|
Repo,
|
||||||
fix_result_detail,
|
ResultConfig,
|
||||||
get_conf_stage,
|
Stage,
|
||||||
get_executorWithConfig,
|
StageConfig,
|
||||||
|
Task,
|
||||||
|
TeapotConfig,
|
||||||
)
|
)
|
||||||
from joj3_config_generator.models import joj1, repo, result, task
|
|
||||||
|
|
||||||
|
|
||||||
# FIXME: LLM generated convert function, only for demostration
|
# FIXME: LLM generated convert function, only for demostration
|
||||||
def convert(repo_conf: repo.Config, task_conf: task.Config) -> result.Config:
|
def convert(repo_conf: Repo, task_conf: Task) -> ResultConfig:
|
||||||
# Create the base ResultConf object
|
# Create the base ResultConf object
|
||||||
result_conf = result.Config(
|
result_conf = result.Config(
|
||||||
name=task_conf.task,
|
name=task_conf.task,
|
||||||
|
@ -24,8 +25,8 @@ def convert(repo_conf: repo.Config, task_conf: task.Config) -> result.Config:
|
||||||
if task_conf.release.deadline
|
if task_conf.release.deadline
|
||||||
else -1
|
else -1
|
||||||
),
|
),
|
||||||
stage=result.Stage(stages=[], sandbox_token=repo_conf.sandbox_token),
|
stage=StageConfig(stages=[], sandbox_token=repo_conf.sandbox_token),
|
||||||
teapot=getTeapotConfig(repo_conf, task_conf),
|
teapot=TeapotConfig(),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Construct healthcheck stage
|
# Construct healthcheck stage
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
from joj3_config_generator.models.repo import Repo as Repo
|
||||||
|
from joj3_config_generator.models.result import Cmd as Cmd
|
||||||
|
from joj3_config_generator.models.result import CmdFile as CmdFile
|
||||||
|
from joj3_config_generator.models.result import ExecutorConfig as ExecutorConfig
|
||||||
|
from joj3_config_generator.models.result import ExecutorWithConfig as ExecutorWithConfig
|
||||||
|
from joj3_config_generator.models.result import ParserConfig as ParserConfig
|
||||||
|
from joj3_config_generator.models.result import ResultConfig as ResultConfig
|
||||||
|
from joj3_config_generator.models.result import Stage as Stage
|
||||||
|
from joj3_config_generator.models.result import StageConfig as StageConfig
|
||||||
|
from joj3_config_generator.models.result import TeapotConfig as TeapotConfig
|
||||||
|
from joj3_config_generator.models.task import Task as Task
|
1327
tests/basic/task.json
Normal file
1327
tests/basic/task.json
Normal file
File diff suppressed because it is too large
Load Diff
119
tests/basic/task.toml
Normal file
119
tests/basic/task.toml
Normal file
|
@ -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
|
Loading…
Reference in New Issue
Block a user