Style archive

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Виды задач/Задача на написание тестов/Программа style_archive

Программа style_archive предназначена для проверки правильности структуры архива с тестами, сдаваемого в случае задач на написание тестов. Программа входит в состав системы ejudge. Параметры проверки архива могут задаваться в командной строке и в переменных окружения. Параметры, заданные в командной строке, переопределяют параметры, заданные в переменных окружения.

Программа в настоящее время поддерживает архивы, основанные на формате TAR с последующим сжатием (.tar.gz, .tar.bz2), а также ZIP-архивы. Для поддержки ZIP-архивов на сервере должна быть установлена программа 7z.

Все диагностические сообщения выводятся на стандартный поток ошибок. В случае, если архив был отвергнут программой, диагностические сообщения могут использоваться для обнаружения и устранения причины ошибки. Если архив оказался корректным, то на стандартный поток вывода выводится содержимое файла README и тестовых файлов.

В случае успешного завершения программа завершается с кодом 0. В случае ошибки код завершения — 1.

При использовании программы в ejudge параметры настройки программы следует передавать через переменные окружения, а не через командную строку. Для этого можно использовать конфигурационную переменную style_checker_env.

Использование

Программа используется следующим образом.

style_archive [OPTIONS...] ARCHIVE-NAME

Здесь ARCHIVE-NAME — это путь к файлу проверяемого архива. Программа поддерживает следующие опции командной строки.

-z SZ Позволяет задать максимальный суммарный размер файлов после разархивирования. Если суммарный размер файлов в архиве превосходит указанную величину, архив отвергается. См. также переменную окружения EJ_MAX_ARCHIVE_SIZE. Значение по умолчанию — 1 мегабайт.
-f SZ Позволяет задать максимальный размер одного файла после разархивирования. Если размер какого-либо файла в архиве превосходит указанную величину, архив отвергается. См. также переменную окружения EJ_MAX_FILE_SIZE. Значение по умолчанию — 1 мегабайт.
-n NUM Позволяет задать максимальное число файлов в архиве. Если общее число файлов в архиве превосходит указанную величину, архив отвергается. См. также переменную окружения EJ_MAX_FILE_COUNT. Значение по умолчанию — 128.
-t Включает режим проверки архива с тестами. В этом режиме контролируется количество и правильное именование файлов с тестами.
-c NUM Позволяет задать максимальное число тестов в архиве. Если общее число тестов в архиве превосходит указанную величину, архив отвергается. См. также переменную окружения EJ_MAX_TEST_COUNT. Значение по умолчанию — 99.
-i PAT Позволяет задать шаблон для файлов с тестовыми данными. См. также переменную окружения EJ_INPUT_PATTERN. Значение по умолчанию — %03d.dat.
-o PAT Позволяет задать шаблон для файлов с правильными ответами. См. также переменную окружения EJ_OUTPUT_PATTERN. Значение по умолчанию — %03d.ans.
-r Позволяет игнорировать отсутствие в архиве файла README.
-. Позволяет игнорировать файлы, имена которых начинаются с символа "точка" (скрытые файлы).
-m Включает режим проверки архива для сборки. По умолчанию включен режим проверки архива тестов.
-p DIR Имя каталога с файлами для сборки, который должен находится в архиве. Значение по умолчанию - solution.
-s FILE Название скрипта для сборки, который должен находиться в архиве. Значение по умолчанию - Makefile.

В параметрах, требующих размер (обозначается SZ), допускается использование суффиксов K, M или G, обозначающих масштабные множители для килобайта, мегабайта и гигабайта соответственно.

Переменные окружения

Поддерживаются следующие переменные окружения.

EJ_MAX_ARCHIVE_SIZE=SZ Позволяет задать максимальный суммарный размер файлов после разархивирования. См. параметр командной строки -z.
EJ_MAX_FILE_SIZE=SZ Позволяет задать максимальный размер файла после разархивирования. См. параметр командной строки -f.
EJ_MAX_FILE_COUNT=NUM Позволяет задать максимальное число файлов в архиве. См. параметр командной строки -n.
EJ_TESTS_MODE=1 Включает режим проверки архива с тестами. См. параметр командной строки -t.
EJ_MAX_TEST_COUNT=NUM Позволяет задать максимальное число тестов в архиве. См. параметр командной строки -c.
EJ_INPUT_PATTERN=PAT Позволяет задать шаблон для файлов с тестовыми данными. См. параметр командной строки -i.
EJ_OUTPUT_PATTERN=PAT Позволяет задать шаблон для файлов с ответами к тестовым данным. См. параметр командной строки -o.
EJ_NO_README=1 Позволяет игнорировать отсутствие в архиве файла README. См. параметр командной строки -r.
EJ_IGNORE_DOT_FILES=1 Позволяет игнорировать отсутствие в архиве файлы, имена которых начинаются с символа "точка" (скрытые файлы). См. параметр командной строки -..
EJ_MAKE_MODE=1 Включает режим проверки архива для сборки. См. параметр командной строки -m.
EJ_PROGRAM_DIR=DIR Имя каталога с файлами для сборки, который должен находится в архиве. См. параметр командной строки -p.
EJ_SCRIPT_NAME=NAME Название скрипта для сборки, который должен находиться в архиве. См. параметр командной строки -s.
EJ_FORBIDDEN_NAMES=NAME-LIST Список имен файлов, которые не должны находиться в архиве. Имена в списке разделяются запятой. Например, при приеме архива для последующей компиляции с помощью make следуюет запретить нахождение в архиве исполняемого файла-цели компиляции. (начиная с версии 2.3.20)
EJ_FORBIDDEN_SUFFIXES=SUFFIX-LIST Список суффиксов имен файлов, которые не должны находиться в архиве. Суффиксы в списке разделяются запятой. Например, при приеме архива для последующей компиляции с помощью make следуюет запретить нахождение в архиве объектных файлов (суффикс .o). (начиная с версии 2.3.20)

В переменных окружения, требующих размер (обозначается SZ), допускается использование суффиксов K, M или G, обозначающих масштабные множители для килобайта, мегабайта и гигабайта соответственно.

Поддерживаемые форматы архивов

Формат Описание Команда создания Команда разархивирования
tar Несжатый архив tar cf file.tar tests tar xf file.tar
tgz Архив tar, сжатый программой gzip tar cfz file.tgz tests tar xf file.tgz
tbz Архив tar, сжатый программой bzip2 tar cfj file.tgz tests tar xf file.tgz
zip Архив zip zip -r file.zip tests 7z x file.zip