Dockingjudge docs
Set up a code task

Code tasks

Checker declaration

Checker declaration is described in JSON:

Schema defined in pseudo-pydantic:

Checker:
    groups: list[TestGroup]
    precompile: list[PrecompileChecker]
    time_limit: float
    mem_limit_mb: float
    compile_timeout: int = 5
    place_files: dict[str, str] = {}  # list of files to supply to environment (path=content)
    public_cases: list[PublicCase] = []  # test cases to display publicly
    envs: dict[str, str] = {}  # additional environment vars

TestGroup:
    name: str
    depends_on: list[str] = []
    # List of group names on which this group depends.
    # If one of dependency fails, this group will not be run.
    points: int
    scoring_rule: "polar" | "graded" = "graded"
    cases: list[TestCase]

TestCase:
    validators: list[Validator]
    stdin: str
    files_in: dict = {}  # list of files to supply to environment (path=content)
    files_out: list = []  # list of files to require back from solution
    time_limit: Optional[float] = None
    mem_limit_mb: Optional[float] = None

Validator:
    type: str
    args: dict[str, Any]

PrecompileChecker:
    type: str
    args: dict[str, Any] = {}

PublicCase:
    in: str
    out: str
{
  "groups": [
    {
      "name": "A",
      "cases": [
        {
          "stdin": "2\n3\n",
          "validators": [
            {
              "args": {
                "expected": "5"
              },
              "type": "stdout"
            }
          ]
        },
        {
          "stdin": "10\n20\n",
          "validators": [
            {
              "args": {
                "expected": "30"
              },
              "type": "stdout"
            }
          ]
        }
      ],
      "points": 100,
      "depends_on": [],
      "scoring_rule": "graded"
    }
  ],
  "precompile": [],
  "time_limit": 2,
  "mem_limit_mb": 256,
  "public_cases": [
    {
      "in": "2\n3",
      "out": "5"
    },
    {
      "in": "10\n20",
      "out": "30"
    }
  ],
  "compile_timeout": 5
}

Available validators

stdout

Validator args:

expected: str
strip: bool = True

file

Validator args:

filename: str
expected: str
strip: bool = True

Available precompile checkers

has_pattern

Checker args:

patterns: dict[
    str,  # compiler name
    list[str],  # regex patterns
]

Only pass if all patterns are present in solution.

no_pattern

Checker args:

patterns: dict[
    str,  # compiler name
    list[str],  # regex patterns
]

Only pass if all patterns are not present in solution.

no_import

No checker args.

Only pass if there are no import statements.