Serve.cfg:tester:check cmd

From EjudgeWiki

Навигация: Главная страница/Система 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"