// Тонкая настройка: timeout и memory_limit на разных уровнях (file → group // → test), режимы скоринга (partial / all_or_none), переменные окружения, // проверка exit code, передача аргументов. toolchains { gcc { platforms = "linux" } } build "release" { language = "c" standard = "c11" sources = "solution.c" output = "solution" profile = release } // Глобальные дефолты. Применяются к каждому тесту, если тот не // переопределит у себя или на уровне группы. timeout 5s memory_limit = 256M normalize_crlf = true // стрип \r перед сравнением — полезно на Windows trim_trailing_ws = true // trim trailing space/tab на каждой строке group("strict-subset") { weight = 0.4 scoring = all_or_none // группа даёт weight или 0 — без частичного // Эти дефолты применятся к каждому тесту группы. timeout = 2s memory_limit = 64M env("LC_ALL") = "C" env("LANG") = "C" test("fast") { args = "--mode" "fast" stdout = "ok\n" } test("strict-timeout") { timeout = 500ms // переопределяет group timeout stdout = "ok\n" } test("high-memory") { memory_limit = 128M // переопределяет group memory_limit stdout = "ok\n" } test("own-env") { env("FOO") = "bar" // добавляется к group env stdout = "ok\n" } } group("partial-credit") { weight = 0.6 scoring = partial // default: weight * passed/total test("case-1") { stdin = "1\n" stdout = "1\n" exitCode = 0 } test("case-2") { stdin = "2\n" stdout = "4\n" exitCode = 0 } test("case-error") { // Программа ДОЛЖНА выйти с кодом 1 на плохом вводе. stdin = "abc\n" exitCode = 1 stderr contains "invalid input" } }