1. New build system
All checks were successful
build-dsl-smoke / Build judge (push) Successful in 12s
build-dsl-smoke / debug / clang / linux (push) Successful in 6s
build-dsl-smoke / debug / gcc / linux (push) Successful in 8s
build-dsl-smoke / release / clang / linux (push) Successful in 8s
build-dsl-smoke / release / gcc / linux (push) Successful in 6s
build-dsl-smoke / sanitized / clang / linux (push) Successful in 8s
build-dsl-smoke / sanitized / gcc / linux (push) Successful in 7s
build-dsl-smoke / debug / clang / windows (push) Successful in 13s
build-dsl-smoke / debug-valgrind / gcc / linux (push) Successful in 14s
build-dsl-smoke / release / clang / windows (push) Successful in 16s
build-dsl-smoke / debug / msvc / windows (push) Successful in 18s
build-dsl-smoke / release / msvc / windows (push) Successful in 17s
build-dsl-smoke / SUMMARY (push) Successful in 4s
Release / Build & publish (push) Successful in 48s

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2026-04-12 07:59:38 +00:00
parent 358e3146bc
commit 7ec3a43c7a
47 changed files with 14124 additions and 209 deletions

View File

@@ -0,0 +1,69 @@
// Все способы сматчить stdout/stderr: exact, contains, regex, anyOrder,
// numeric-eps. Плюс случай, когда сравнение вывода вообще не нужно
// (достаточно exitCode).
toolchains {
gcc { platforms = "linux" }
}
build "release" {
language = "c"
standard = "c11"
sources = "solution.c"
output = "solution"
profile = release
}
group("matchers") {
weight = 1.0
// Точное совпадение (по умолчанию). Пробелы, переводы строк и
// регистр важны. Нормализация CRLF / trim_ws настраивается на
// уровне файла.
test("exact") {
stdin = "42\n"
stdout = "42\n"
}
// Подстрока в любом месте вывода.
test("contains") {
stdin = "log me\n"
stdout contains "log me"
}
// Регулярное выражение (Go regexp syntax).
test("regex") {
stdin = "7\n"
stdout matches "^result:\\s+[0-9]+\\s*$"
}
// Лайны могут прийти в любом порядке — полезно для stress-тестов
// с параллельным выводом.
test("any-order") {
stdin = "start\n"
stdout anyOrder {
"alpha"
"beta"
"gamma"
}
}
// Числовое сравнение с epsilon — для задач с плавающей точкой.
// Синтаксис: ~ <float> of "<ожидаемое значение как строка>"
test("numeric") {
stdin = "3.14159\n"
stdout ~ 0.0001 of "3.14159\n"
}
// Проверяем только stderr; stdout не трогаем вообще (NoMatcher).
test("stderr-only") {
args = "--version"
stderr contains "version 1."
}
// Никакого матчинга вывода — нас интересует только exit code.
test("exit-code-only") {
args = "--help"
exitCode = 0
}
}