Serve.cfg:tester:check cmd
Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры тестирования/check_cmd
Имя переменной: | check_cmd |
Содержится в: | tester |
Используется: | run |
Тип содержимого: | путь к файлу |
Может отсутствовать: | нет |
Наследуется: | да |
Может повторяться: | нет |
Описание. Описание. Данная конфигурационная переменная устанавливает путь к проверяющей программе, которая запускается каждый раз после завершения работы тестируемой программы на очередном тесте и проверяет правильность ответа тестируемой программы. Проверяющая программа запускается только если тестируемая программа уложилась в отведённое на работу над одним тестом время (см. переменную time_limit) и завершилась успешно, то есть выработав код возврата 0. Проверяющей программе передаются два или три параметра в зависимости от того, установлена ли переменная use_corr описания задачи, то есть используется ли при тестировании решения заранее заготовленный файл с правильным ответом.
- Первый параметр (argv[1]) проверяющей программы — путь к файлу, в котором находятся входные данные текущего теста. Передаётся путь к файлу, находящемуся в тестовом каталоге (см. переменную test_dir), а не к файлу, скопированному в каталог тестирования перед запуском тестируемой программы. Таким образом, вне зависимости от значения переменной is_dos проверяющая программа работает с
непреобразованным входным файлом.
- Второй параметр (argv[2]) проверяющей программы — путь к файлу, в котором находится результат работы тестируемой программы. Преобразования формата файла не выполняется, поэтому проверяющая программа должна обрабатывать концы строк в и стиле DOS (’\r’, ’\n’) для проверки решения DOS- или win32-программ, и в стиле Unix (’\n’) для проверки решения Linux-программ.
- Если установлена конфигурационная переменная use_corr, третий параметр (argv[3]) проверяющей программы — путь к файлу, содержащему правильный ответ на текущий тест (см. переменную corr_dir). Если конфигурационная переменная use_corr не установлена, третий параметр в проверяющую программу не передаётся.
Проверяющая программа запускается с текущим каталогом, установленным в рабочий каталог тестирования. Вывод проверяющей программы на стандартный поток вывода или стандартный поток ошибок сохраняется и добавляется в файл протокола. Результат тестирования определяется по коду возврата, выработанному проверяющей программой.
0 | OK — тестируемая программа выдала верный ответ. |
4 | “Presentation error” |
5 | “Wrong answer” |
Если проверяющая программа выработала любой другой код завершения, завершилась из-за прихода сигнала (любого), или превысила отведённый ей лимит времени (см. переменную checker_real_time_limit), тестирование программы участника завершается со статусом “Check failed”.
Если данная конфигурационная переменная не установлена, но абстрактный тестировщик, указанный в переменной super, устанавливает эту переменную, используется значение переменной из описания абстрактного тестировщика, при этом выполняются [[форматные подстановки]]. Если после этого значение данной переменной check_cmd всё ещё не определено, программа run выдаёт ошибку и отказывается запускаться. Если значение переменной check_cmd не начинается с символа ’/’, то есть является относительным путём, оно добавляется к значению глобальной конфигурационной переменной checker_dir.
Пример.
check_cmd = "check_a"