Difference between revisions of "Style archive"
Line 131: | Line 131: | ||
<td width="15%"><tt>EJ_FORBIDDEN_NAMES=NAME-LIST</tt></td> | <td width="15%"><tt>EJ_FORBIDDEN_NAMES=NAME-LIST</tt></td> | ||
<td>Список имен файлов, которые не должны находиться в архиве. Имена в списке разделяются запятой. Например, при приеме | <td>Список имен файлов, которые не должны находиться в архиве. Имена в списке разделяются запятой. Например, при приеме | ||
− | архива для последующей компиляции с помощью make следуюет запретить нахождение в архиве исполняемого файла-цели компиляции. (начиная с версии 2.3.20)</td> | + | архива для последующей компиляции с помощью make следуюет запретить нахождение в архиве исполняемого файла-цели компиляции. (начиная с версии [[Изменения в версии 2.3.20|2.3.20]])</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
<td width="15%"><tt>EJ_FORBIDDEN_SUFFIXES=SUFFIX-LIST</tt></td> | <td width="15%"><tt>EJ_FORBIDDEN_SUFFIXES=SUFFIX-LIST</tt></td> | ||
<td>Список суффиксов имен файлов, которые не должны находиться в архиве. Суффиксы в списке разделяются запятой. | <td>Список суффиксов имен файлов, которые не должны находиться в архиве. Суффиксы в списке разделяются запятой. | ||
− | Например, при приеме архива для последующей компиляции с помощью make следуюет запретить нахождение в архиве объектных файлов (суффикс .o). (начиная с версии 2.3.20)</td> | + | Например, при приеме архива для последующей компиляции с помощью make следуюет запретить нахождение в архиве объектных файлов (суффикс .o). (начиная с версии [[Изменения в версии 2.3.20|2.3.20]])</td> |
</tr> | </tr> | ||
</table> | </table> |
Latest revision as of 06:01, 25 December 2011
Навигация: Главная страница/Система 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 |