53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
// Автогенерация тестов из папки с файлами. Удобно когда тестов много и
|
||
// вручную выписывать каждый через test("...") { stdin = ... stdout = ... }
|
||
// будет слишком громоздко.
|
||
//
|
||
// Два режима:
|
||
// 1) file-glob — пары .in/.ans файлов
|
||
// 2) dir-mode — каждый тест лежит в своей подпапке с фиксированными
|
||
// именами input/output файлов
|
||
|
||
toolchains {
|
||
gcc { platforms = "linux" }
|
||
}
|
||
|
||
build "release" {
|
||
language = "c"
|
||
standard = "c11"
|
||
sources = "solution.c"
|
||
output = "solution"
|
||
profile = release
|
||
}
|
||
|
||
// Режим 1: глобы на input и output файлы.
|
||
// Тестом становится каждая пара (tests/*.in, tests/*.ans) с совпадающим
|
||
// базовым именем. Имя теста — имя файла без расширения.
|
||
group("from-files") {
|
||
weight = 0.5
|
||
|
||
pattern {
|
||
input = "tests/*.in"
|
||
output = "tests/*.ans"
|
||
}
|
||
}
|
||
|
||
// Режим 2: каждый тест — подкаталог с фиксированным layout'ом.
|
||
// Ожидается структура:
|
||
// cases/
|
||
// 01-basic/
|
||
// input.txt
|
||
// expected.txt
|
||
// 02-edge/
|
||
// input.txt
|
||
// expected.txt
|
||
// Имя теста — имя подкаталога.
|
||
group("from-dirs") {
|
||
weight = 0.5
|
||
|
||
pattern {
|
||
dirs = "cases/*"
|
||
input = "input.txt"
|
||
output = "expected.txt"
|
||
}
|
||
}
|