.inf-файлы
Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/.inf-файлы
Файлы с дополнительной информацией о тестах располагаются в том же каталоге, в котором располагаются файлы с тестовыми данными и файлы с эталонными ответами. По умолчанию файлы с дополнительной информацией имеют суффикс имени .inf.
Файл предназначен для уточнения режимов запуска тестируемой программы в зависимости от теста. В файле можно задавать аргументы командной строки для запускаемой программы и переменные окружения. Для проверки ответа завершившейся программы можно указать запрет вывода тестируемой программы на стандартный поток ошибок, включить режим проверки вывода на стандартный поток ошибок, указать ожидаемый код завершения тестируемой программы. При отображении результатов тестирования можно указать комментарий к тесту, отображаемый для участников и проверяющих.
Contents
- 1 Включение режима подстановки
- 2 Аргументы командной строки
- 3 Переменные окружения
- 4 Управление выводом тестируемой программы
- 5 Задание ожидаемого кода завершения
- 6 Комментарии к тесту
- 7 Управление компиляцией
- 8 Отключение valgrind
- 9 Ограничения тестируемой программы
- 10 Пропуск теста в зависимости от языка программирования
Включение режима подстановки
Первой строкой в файле может находиться параметр
enable_subst
В этом случае будет включен режим подстановки. В дальнейшем тексте все вхождения переменных вида ${VARNAME}
будут заменяться на их значения.
FIXME: описать переменные
Аргументы командной строки
Аргументы командной строки задаются с помощью параметра params
. Например,
params = 1 2 3
В запускаемую программу будут переданы три аргумента командной строки: "1", "2", "3". Аргументы командной строки разделяются пробельными символами. Допускается не передавать в программу аргументы командной строки.
params =
В этом случае в запускаемую программу будет передано только имя самой запускаемой программы.
Для передачи аргументов командной строки, содержащих пробел и другие управляющие символы используются строки в стиле Си:
params = "1 2" "\"var\""
В этому случае в программу передаются два параметра командной строки: первый параметр содержит пробел, а второй - кавычки.
Параметр program_name
позволяет задать имя запускаемой программы, которое будет передаваться в тестируемую программу в качестве параметра argv[0]
. Поддерживается с версии 3.8.0.
program_name = "prog"
Переменные окружения
Переменные окружения задаются с помощью параметра environ
. Например,
environ = VAR1=value1 VAR2=value2
при запуске программы будут установлены две переменных окружения VAR1 и VAR2 со значениями value1 и value2 соответственно.
Параметр init_env
позволяет задать переменные окружения для программы инициализации,
задаваемой параметром init_cmd
. Значения переменных задаются как описано выше.
Параметр interactor_env
позволяет задать переменные окружения для интерактора,
задаваемой параметром interactor_cmd
. Значения переменных задаются как описано выше.
Параметр checker_env
позволяет задать переменные окружения для проверяющей программы,
задаваемой параметром check_cmd
. Значения переменных задаются как описано выше.
Управление выводом тестируемой программы
Параметр 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 на данном тесте.
Параметр ignore_exit_code
отключает на данном тесте
режим проверки кода завершения процесса.
ignore_exit_code
Если для задачи в целом активирован режим ignore_exit_code, его можно деактивировать для одно теста указав
ignore_exit_code = 0
Данный параметр работает только для кода завершения системного
вызова _exit
и аналогичных. Если тестируемая программа
завершилась из-за сигнала, по-прежнему диагностируется
Run-Time Error.
Комментарии к тесту
Параметр 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
. Подстановочный файл также должен находиться в каталоге с тестами к задаче.
Параметр allow_compile_error
позволяет разрешить
ошибки компиляции на данном тесте. В случае ошибки компиляции будет
скомпилирован файл, заданный в source_stub
.
В случае успешной компиляции используется результат компиляции.
Поддерживается с версии 3.9.0.
Отключение valgrind
Параметр disable_valgrind
позволяет отключить запуск тестируемой программы под управлением valgrind для данного теста. Параметр имеет смысл при тестировании под управлением valgrind, например, для языков gcc-vg или g++-vg.
Ограничения тестируемой программы
Параметр max_open_file_count
позволяет изменить максимальное число одновременно открытых файловых дескрипторов для этого теста. См. также ограничение max_open_file_count
на уровне задачи. Поддерживается с версии 3.6.1.
max_open_file_count = 10
Параметр max_process_count
позволяет изменить максимальное процессоров (нитей) для этого теста. См. также ограничение max_process_count
на уровне задачи. Поддерживается с версии 3.6.1.
max_process_count = 2
Параметр max_vm_size
позволяет изменить ограничение на размер виртуального адресного пространства процесса. См. также ограничение max_vm_size
на уровне задачи. Поддерживается с версии 3.6.3.
max_vm_size = 256M
Параметр max_stack_size
позволяет изменить ограничение на размер стека процесса. См. также ограничение max_stack_size
на уровне задачи. Поддерживается с версии 3.6.3.
max_stack_size = 64M
Параметр max_rss_size
позволяет изменить ограничение на размер использованной оперативной памяти процесса. См. также ограничение max_rss_size
на уровне задачи. Поддерживается с версии 3.9.0.
max_rss_size = 64M
Параметр max_file_size
позволяет изменить ограничение на размер создаваемых процессом файлов. См. также ограничение max_file_size
на уровне задачи. Поддерживается с версии 3.6.3.
max_file_size = 32M
Параметр time_limit_ms
позволяет изменить ограничение времени выполнения тестируемой программы в миллисекундах. См. также ограничение time_limit
или time_limit_millis
на уровне задачи. Поддерживается с версии 3.8.0.
time_limit_ms = 1000
Параметр real_time_limit_ms
позволяет изменить ограничение реального времени выполнения тестируемой программы. См. также ограничение real_time_limit
на уровне задачи. Поддерживается с версии 3.8.0.
time_limit_ms = 3000
Пропуск теста в зависимости от языка программирования
Параметр ok_language позволяет пропускать тестирование на данном тесте в зависимости от языка, на котором было сдано тестируемое решение. Пропущенные тесты получают статус OK без запуска на них тестируемой программы и проверки ее ответа.
ok_language = gcc-32