Difference between revisions of ".inf-файлы"
Line 81: | Line 81: | ||
Если в конфигурационном разделе задачи заданы переменные <tt>[[serve.cfg:problem:enable_multi_header|enable_multi_header]]</tt>, <tt>[[serve.cfg:problem:compiler_env_pat|compiler_env_pat]]</tt>, то .inf-файл может использоваться для управления компиляцией. | Если в конфигурационном разделе задачи заданы переменные <tt>[[serve.cfg:problem:enable_multi_header|enable_multi_header]]</tt>, <tt>[[serve.cfg:problem:compiler_env_pat|compiler_env_pat]]</tt>, то .inf-файл может использоваться для управления компиляцией. | ||
+ | |||
+ | Для задания опций компилятора в может использоваться параметр <tt>compiler_env</tt>, например | ||
+ | |||
+ | compiler_env = "EJUDGE_FLAGS=-DTEST10" | ||
+ | |||
+ | Здесь устанавливается переменная окружения <tt>EJUDGE_FLAGS</tt>. Она будет передана в скрипт компиляции, который подставит значение этой переменной окружения в командную строку компиляции. | ||
+ | |||
+ | Аналогично могут задаваться переменные окружения для программы проверки стиля: | ||
+ | |||
+ | style_checker_env = "DISABLE_X=1" | ||
+ | |||
+ | Если на некотором тесте компилятор должен выдать ошибку компиляции, например, когда проверяется, что сданный на проверку файл не позволяет выполнять те или иные операции, например, если сдается класс C++, то проверяется, что объект класса не может быть скопирован, то может использоваться параметр <tt>compiler_must_fail</tt> | ||
+ | |||
+ | compiler_must_fail | ||
+ | source_stub = "002_s" | ||
+ | |||
+ | В параметре <tt>source_stub</tt> указывается шаблон имени файла, который будет использован чтобы все-таки скомпилировать исполняемую программу для данного теста. К шаблону имени файла будет добавлен суффикс имени исходного файла и короткое имя языка программирования (если установлена опция <tt>use_lang_multi_header</tt>). Например, в случае сдачи программы для компилятора g++ полное имя подставляемого исходного файла будет либо <tt>002_s.cpp</tt>, либо <tt>002_s.g++.cpp</tt>. Подстановочный файл также должен находиться в каталоге с тестами к задаче. |
Revision as of 05:41, 20 March 2016
Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/.inf-файлы
Файлы с дополнительной информацией о тестах располагаются в том же каталоге, в котором располагаются файлы с тестовыми данными и файлы с эталонными ответами. По умолчанию файлы с дополнительной информацией имеют суффикс имени .inf.
Файл предназначен для уточнения режимов запуска тестируемой программы в зависимости от теста. В файле можно задавать аргументы командной строки для запускаемой программы и переменные окружения. Для проверки ответа завершившейся программы можно указать запрет вывода тестируемой программы на стандартный поток ошибок, включить режим проверки вывода на стандартный поток ошибок, указать ожидаемый код завершения тестируемой программы. При отображении результатов тестирования можно указать комментарий к тесту, отображаемый для участников и проверяющих.
Contents
Включение режима подстановки
Первой строкой в файле может находиться параметр
enable_subst
В этом случае будет включен режим подстановки. В дальнейшем тексте все вхождения переменных вида ${VARNAME} будут заменяться на их значения.
FIXME: описать переменные
Аргументы командной строки
Аргументы командной строки задаются с помощью параметра params. Например,
params = 1 2 3
В запускаемую программу будут переданы три аргумента командной строки: "1", "2", "3". Аргументы командной строки разделяются пробельными символами. Допускается не передавать в программу аргументы командной строки.
params =
В этом случае в запускаемую программу будет передано только имя самой запускаемой программы.
Для передачи аргументов командной строки, содержащих пробел и другие управляющие символы используются строки в стиле Си:
params = "1 2" "\"var\""
В этому случае в программу передаются два параметра командной строки: первый параметр содержит пробел, а второй - кавычки.
Переменные окружения
Переменные окружения задаются с помощью параметра environ. Например,
environ = VAR1=value1 VAR2=value2
при запуске программы будут установлены две переменных окружения VAR1 и VAR2 со значениями value1 и value2 соответственно.
Управление выводом тестируемой программы
Параметр disable_stderr запрещает тестируемой программе вывод на стандартный поток ошибок. Если тестируемая программа в процессе выполнения вывела что-либо на stderr, она получит вердикт выполнения Presentation error. Данный параметр аналогичен конфигурационной переменной раздела описания задач disable_stderr, но позволяет задавать этот режим для отдельных тестов, а не для задачи целиком.
Чтобы включить режим запрета вывода на стандартный поток ошибок значение параметра либо не указывается, либо указывается большим нуля, например:
disable_stderr
Чтобы отключить режим запрета вывода на стандартный поток ошибок, если они был включен для всей задачи в целом, необходимо указать значение параметра 0.
disable_stderr = 0
Параметр check_stderr включает режим проверки стандартного потока ошибок программы. Параметр действует только в случае, если вывод тестируемой программы на стандартный поток ошибок не запрещен. По умолчанию с эталонным ответом сравнивается стандартный поток вывода тестируемой программы. С помощью указания параметра
check_stderr
можно включить режим сравнения вывода программы на стандартный поток ошибок. В этом случае вывод программы на стандартный поток вывода будет игнорироваться.
Задание ожидаемого кода завершения
Параметр exit_code позволяет задать ожидаемый код завершения программы. Если на данном тесте программа должна завершиться не с кодом 0 как обычно, а, например, с кодом 1, то указывается следующий параметр:
exit_code = 1
В случае, если тестируемая программа на данном тесте завершится с кодом, отличным от 1, она получит вердикт Wrong answer на данном тесте.
Комментарии к тесту
Параметр team_comment позволяет задать комментарий к тесту, который будет отображаться участнику в протоколе тестирования, даже в случае, когда сам тест закрыт для участника. Например,
team_comment = "тест на крайнее значение x"
Параметр comment позволяет задать комментарий к тесту, отображаемый для проверяющих и администраторов, но не для участников.
comment = "тест на случай x == 0"
Управление компиляцией
Если в конфигурационном разделе задачи заданы переменные enable_multi_header, compiler_env_pat, то .inf-файл может использоваться для управления компиляцией.
Для задания опций компилятора в может использоваться параметр compiler_env, например
compiler_env = "EJUDGE_FLAGS=-DTEST10"
Здесь устанавливается переменная окружения EJUDGE_FLAGS. Она будет передана в скрипт компиляции, который подставит значение этой переменной окружения в командную строку компиляции.
Аналогично могут задаваться переменные окружения для программы проверки стиля:
style_checker_env = "DISABLE_X=1"
Если на некотором тесте компилятор должен выдать ошибку компиляции, например, когда проверяется, что сданный на проверку файл не позволяет выполнять те или иные операции, например, если сдается класс C++, то проверяется, что объект класса не может быть скопирован, то может использоваться параметр compiler_must_fail
compiler_must_fail source_stub = "002_s"
В параметре source_stub указывается шаблон имени файла, который будет использован чтобы все-таки скомпилировать исполняемую программу для данного теста. К шаблону имени файла будет добавлен суффикс имени исходного файла и короткое имя языка программирования (если установлена опция use_lang_multi_header). Например, в случае сдачи программы для компилятора g++ полное имя подставляемого исходного файла будет либо 002_s.cpp, либо 002_s.g++.cpp. Подстановочный файл также должен находиться в каталоге с тестами к задаче.