Difference between revisions of "Serve.cfg:tester:check cmd"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/[[serve...") |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 16: | Line 16: | ||
|'''Может повторяться:''' || ''нет'' | |'''Может повторяться:''' || ''нет'' | ||
|} | |} | ||
− | '''Описание.''' | + | '''Описание.''' Данная конфигурационная переменная устанавливает путь к проверяющей |
− | |||
программе, которая запускается каждый раз после завершения работы тестируемой программы на очередном тесте и проверяет правильность ответа тестируемой программы. Проверяющая программа запускается только если тестируемая программа уложилась в отведённое | программе, которая запускается каждый раз после завершения работы тестируемой программы на очередном тесте и проверяет правильность ответа тестируемой программы. Проверяющая программа запускается только если тестируемая программа уложилась в отведённое | ||
на работу над одним тестом время (см. переменную <tt>[[serve.cfg:problem:time_limit|time_limit]]</tt>) и завершилась успешно, | на работу над одним тестом время (см. переменную <tt>[[serve.cfg:problem:time_limit|time_limit]]</tt>) и завершилась успешно, | ||
Line 23: | Line 22: | ||
есть используется ли при тестировании решения заранее заготовленный файл с правильным | есть используется ли при тестировании решения заранее заготовленный файл с правильным | ||
ответом. | ответом. | ||
− | * Первый параметр (<tt>argv[1]</tt>) проверяющей программы — путь к файлу, в котором находятся входные данные текущего теста. Передаётся путь к файлу, находящемуся в тестовом каталоге (см. переменную <tt>[[serve.cfg:problem:test_dir|test_dir]]</tt>), а не к файлу, скопированному в каталог тестирования перед запуском тестируемой программы. Таким образом, вне зависимости от значения переменной <tt>[[serve.cfg:tester:is_dos|is_dos]]</tt> проверяющая программа работает с | + | * Первый параметр (<tt>argv[1]</tt>) проверяющей программы — путь к файлу, в котором находятся входные данные текущего теста. Передаётся путь к файлу, находящемуся в тестовом каталоге (см. переменную <tt>[[serve.cfg:problem:test_dir|test_dir]]</tt>), а не к файлу, скопированному в каталог тестирования перед запуском тестируемой программы. Таким образом, вне зависимости от значения переменной <tt>[[serve.cfg:tester:is_dos|is_dos]]</tt> проверяющая программа работает с непреобразованным входным файлом. |
− | непреобразованным входным файлом. | ||
* Второй параметр (<tt>argv[2]</tt>) проверяющей программы — путь к файлу, в котором находится результат работы тестируемой программы. Преобразования формата файла не выполняется, поэтому проверяющая программа должна обрабатывать концы строк в и стиле <tt>DOS</tt> (<tt>’\r’</tt>, <tt>’\n’</tt>) для проверки решения <tt>DOS</tt>- или <tt>win3</tt>2-программ, и в стиле <tt>Unix</tt> (<tt>’\n’</tt>) для проверки решения <tt>Linux</tt>-программ. | * Второй параметр (<tt>argv[2]</tt>) проверяющей программы — путь к файлу, в котором находится результат работы тестируемой программы. Преобразования формата файла не выполняется, поэтому проверяющая программа должна обрабатывать концы строк в и стиле <tt>DOS</tt> (<tt>’\r’</tt>, <tt>’\n’</tt>) для проверки решения <tt>DOS</tt>- или <tt>win3</tt>2-программ, и в стиле <tt>Unix</tt> (<tt>’\n’</tt>) для проверки решения <tt>Linux</tt>-программ. | ||
* Если установлена конфигурационная переменная <tt>[[serve.cfg:problem:use_corr|use_corr]]</tt>, третий параметр (<tt>argv[3]</tt>) проверяющей программы — путь к файлу, содержащему правильный ответ на текущий тест (см. переменную <tt>[[serve.cfg:problem:corr_dir|corr_dir]]</tt>). Если конфигурационная переменная <tt>use_corr</tt> не установлена, третий параметр в проверяющую программу не передаётся. | * Если установлена конфигурационная переменная <tt>[[serve.cfg:problem:use_corr|use_corr]]</tt>, третий параметр (<tt>argv[3]</tt>) проверяющей программы — путь к файлу, содержащему правильный ответ на текущий тест (см. переменную <tt>[[serve.cfg:problem:corr_dir|corr_dir]]</tt>). Если конфигурационная переменная <tt>use_corr</tt> не установлена, третий параметр в проверяющую программу не передаётся. | ||
Line 38: | Line 36: | ||
|} | |} | ||
Если проверяющая программа выработала любой другой код завершения, завершилась | Если проверяющая программа выработала любой другой код завершения, завершилась | ||
− | из-за прихода сигнала (любого), или превысила отведённый ей лимит времени (см. переменную checker_real_time_limit), тестирование программы участника завершается | + | из-за прихода сигнала (любого), или превысила отведённый ей лимит времени (см. переменную <tt>[[serve.cfg:problem:checker_real_time_limit|checker_real_time_limit]]</tt>), тестирование программы участника завершается |
со статусом “Check failed”. | со статусом “Check failed”. | ||
− | Если данная конфигурационная переменная не установлена, но абстрактный тестировщик, указанный в переменной super, устанавливает эту переменную, используется значение переменной из описания абстрактного тестировщика, при этом выполняются форматные | + | Если данная конфигурационная переменная не установлена, но абстрактный тестировщик, указанный в переменной <tt>[[serve.cfg:tester:super|super]]</tt>, устанавливает эту переменную, используется значение переменной из описания абстрактного тестировщика, при этом выполняются [[форматные подстановки]]. Если после этого значение данной переменной <tt>check_cmd</tt> всё ещё не определено, программа <tt>run</tt> выдаёт ошибку и отказывается запускаться. Если значение переменной |
− | подстановки. Если после этого значение данной переменной check_cmd всё ещё не определено, программа run выдаёт ошибку и отказывается запускаться. Если значение переменной | + | <tt>check_cmd</tt> не начинается с символа <tt>’/’</tt>, то есть является относительным путём, оно добавляется к значению глобальной конфигурационной переменной <tt>[[serve.cfg:global:checker_dir|checker_dir]]</tt>. |
− | check_cmd не начинается с символа ’/’, то есть является относительным путём, оно добавляется к значению глобальной конфигурационной переменной checker_dir. | ||
'''Пример.''' | '''Пример.''' | ||
check_cmd = "check_a" | check_cmd = "check_a" |
Latest revision as of 09:43, 20 February 2012
Навигация: Главная страница/Система 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"