prove
СОДЕРЖАНИЕ
- НАЗВАНИЕ
- ИСПОЛЬЗОВАНИЕ
- ПАРАМЕТРЫ
- ПРИМЕЧАНИЯ
- ФОРМАТИРОВЩИКИ
- ОБРАБОТЧИКИ ИСТОЧНИКОВ
- ПЛАГИНЫ
НАЗВАНИЕ
prove - Запуск тестов с помощью TAP-оболочки.
ИСПОЛЬЗОВАНИЕ
prove [options] [files or directories] ПАРАМЕТРЫ
Логические параметры:
-v, --verbose Print all test lines.
-l, --lib Add 'lib' to the path for your tests (-Ilib).
-b, --blib Add 'blib/lib' and 'blib/arch' to the path for
your tests
-s, --shuffle Run the tests in random order.
-c, --color Colored test output (default).
--nocolor Do not color test output.
--count Show the X/Y test count when not verbose
(default)
--nocount Disable the X/Y test count.
-D --dry Dry run. Show test that would have run.
-f, --failures Show failed tests.
-o, --comments Show comments.
--ignore-exit Ignore exit status from test scripts.
-m, --merge Merge test scripts' STDERR with their STDOUT.
-r, --recurse Recursively descend into directories.
--reverse Run the tests in reverse order.
-q, --quiet Suppress some test output while running tests.
-Q, --QUIET Only print summary results.
-p, --parse Show full list of TAP parse errors, if any.
--directives Only show results with TODO or SKIP directives.
--timer Print elapsed time after each test.
--trap Trap Ctrl-C and print summary on interrupt.
--normalize Normalize TAP output in verbose output
-T Enable tainting checks.
-t Enable tainting warnings.
-W Enable fatal warnings.
-w Enable warnings.
-h, --help Display this help
-?, Display this help
-V, --version Display the version
-H, --man Longer manpage for prove
--norc Don't process default .proverc Параметры, принимающие аргументы:
-I Library paths to include.
-P Load plugin (searches App::Prove::Plugin::*.)
-M Load a module.
-e, --exec Interpreter to run the tests ('' for compiled
tests.)
--ext Set the extension for tests (default '.t')
--harness Define test harness to use. See TAP::Harness.
--formatter Result formatter to use. See FORMATTERS.
--source Load and/or configure a SourceHandler. See
SOURCE HANDLERS.
-a, --archive out.tgz Store the resulting TAP in an archive file.
-j, --jobs N Run N test jobs in parallel (try 9.)
--state=opts Control prove's persistent state.
--statefile=file Use `file` instead of `.prove` for state
--rc=rcfile Process options from rcfile
--rules Rules for parallel vs sequential processing. ПРИМЕЧАНИЯ
.proverc
Если файлы ~/.proverc или ./.proverc существуют, они будут прочитаны, и все параметры, которые они содержат, будут обработаны перед параметрами командной строки. Параметры в .proverc задаются так же, как и параметры командной строки:
# .proverc
--state=hot,fast,save
-j9 Дополнительные файлы параметров могут быть указаны с помощью параметра --rc. Обработка файлов параметров по умолчанию отключена параметром --norc.
В Windows и VMS файл параметров называется _proverc, а не .proverc и ищется только в текущей директории.
Чтение из STDIN
Если у вас есть список тестов (или URL-адресов, или чего-либо ещё, что вы хотите протестировать) в файле, вы можете добавить их в свои тесты, используя символ '-':
prove - < my_list_of_things_to_test.txt См. README в каталоге examples этого дистрибутива.
Директория по умолчанию для тестов
Если не указаны файлы или директории, prove ищет все файлы, соответствующие шаблону t/*.t.
Цветной вывод тестов
Цветной вывод тестов с помощью TAP::Formatter::Color по умолчанию включён, но если вывод не направлен на терминал, цвет отключается. Вы можете переопределить это, добавив переключатель --color.
Поддержка цвета требует Term::ANSIColor и, в системах Windows, также Win32::Console::ANSI. Если необходимые модули не установлены, цветной вывод не будет доступен.
Код завершения
Если тесты завершаются неудачно, prove выйдет со статусом, отличным от нуля.
Аргументы для тестов
Возможна передача аргументов тестам. Для этого разделите их от собственных аргументов prove с помощью двоеточия '::'. Например
prove -v t/mytest.t :: --url http://example.com запустит t/mytest.t с параметрами '--url http://example.com'. При запуске нескольких тестов каждый из них получит те же аргументы.
--exec
Обычно достаточно передать список Perl-тестов, и оболочка узнает, как их выполнить. Однако, если ваши тесты написаны не на Perl, или если вы хотите, чтобы все тесты вызывались одинаково, используйте параметр -e, или --exec:
prove --exec '/usr/bin/ruby -w' t/
prove --exec '/usr/bin/perl -Tw -mstrict -Ilib' t/
prove --exec '/path/to/my/customer/exec'
--merge
Если вам нужно убедиться, что диагностические сообщения отображаются в правильном порядке относительно результатов тестов, вы можете использовать параметр --merge для объединения STDERR скриптов тестов в их STDOUT.
Это гарантирует, что STDOUT (где отображаются результаты тестов) и STDERR (где отображаются диагностические сообщения) будут синхронизированы. Оболочка отобразит все диагностические сообщения, которые ваши тесты выведут в STDERR.
Предупреждение: это немного хак. В частности, обратите внимание, что если что-то, что появляется в STDERR, выглядит как результат теста, оболочка тестов может запутаться. Используйте этот параметр только в том случае, если вы понимаете последствия и можете смириться с риском.
--trap
Параметр --trap попытается перехватить SIGINT (Ctrl-C) во время выполнения теста и отобразить сводку теста, даже если выполнение было прервано
--state
Вы можете попросить prove запомнить состояние предыдущих запусков тестов и выбрать/упорядочить тесты для выполнения на основе сохранённого состояния.
Параметр --state требует аргумента, который должен быть списком, разделённым запятыми, одного или нескольких следующих параметров.
last-
Запустить те же тесты, что и в прошлый раз, когда состояние было сохранено. Это позволяет, например, восстановить порядок перемешанного теста.
# Run all tests in random order $ prove -b --state=save --shuffle # Run them again in the same order $ prove -b --state=last failed-
Запустить только тесты, которые завершились неудачей в предыдущем запуске.
# Run all tests $ prove -b --state=save # Run failures $ prove -b --state=failedЕсли вы также укажете параметр
save, вновь пройденные тесты будут исключены из последующих запусков.# Repeat until no more failures $ prove -b --state=failed,save passed-
Запустить только тесты, которые завершились успехом в прошлый раз. Полезно для того, чтобы убедиться, что не возникли новые проблемы.
all-
Запустить все тесты в обычном порядке. Можно указать несколько параметров, например, чтобы запустить все тесты, а те, что завершились неудачей в прошлый раз, в начале:
$ prove -b --state=failed,all,save hot-
Запустить тесты, которые в последний раз завершились неудачей, в первую очередь. Время последней неудачи каждого теста сохраняется. Параметр
hotзаставляет тесты выполняться в порядке последней неудачи.$ prove -b --state=hot,saveТесты, которые никогда не завершались неудачей, не будут выбраны. Чтобы запустить все тесты, начиная с последней неудачи, используйте
$ prove -b --state=hot,all,saveЭто сочетание параметров также может быть указано следующим образом
$ prove -b --state=adrian todo-
Запустить все тесты со статусом todo.
slow-
Запустить тесты в порядке от самых медленных к самым быстрым. Это полезно в сочетании с параметром параллельного тестирования
-j, чтобы убедиться, что ваши самые медленные тесты начнут выполняться первыми.$ prove -b --state=slow -j9 fast-
Запустить тесты в порядке от самых быстрых к самым медленным.
new-
Запустить тесты в порядке от самых новых к самым старым на основе времени модификации скриптов тестов.
old-
Запустить тесты в порядке от самых старых к самым новым.
fresh-
Запустить те скрипты тестов, которые были изменены после последнего выполнения тестов.
save-
Сохранить состояние при завершении. Состояние сохраняется в файл .prove (_prove в Windows и VMS) в текущей директории.
Параметр --state может быть указан более одного раза.
$ prove -b --state=hot --state=all,save --rules
Параметр --rules используется для управления тем, какие тесты выполняются последовательно, а какие — параллельно, если указан параметр --jobs. Этот параметр может быть указан несколько раз, и порядок имеет значение.
Наиболее практичное использование, вероятно, заключается в указании того, что некоторые тесты не «готовы к параллельному выполнению». Поскольку упоминание файла с помощью --rules не приводит к его выбору для выполнения в качестве теста, вы можете «установить и забыть» некоторые предпочтения правил в файле .proverc. Тогда вы сможете извлечь максимальную выгоду из преимуществ параллельного тестирования, сохраняя при этом некоторые исключения, которые будут выполняться последовательно.
Примеры --rules
# All tests are allowed to run in parallel, except those starting with "p"
--rules='seq=t/p*.t' --rules='par=**'
# All tests must run in sequence except those starting with "p", which should be run parallel
--rules='par=t/p*.t' Разрешение --rules
-
По умолчанию все тесты могут выполняться параллельно. Указание любых собственных правил отменяет это правило.
-
«Первое совпадение — выигрывает». Первое правило, которое соответствует тесту, будет применено.
-
Любой тест, который не соответствует ни одному правилу, будет выполнен последовательно в конце выполнения.
-
Наличие правила не подразумевает выбор теста. Вам по-прежнему необходимо указать тесты для выполнения.
-
Указание правила для разрешения параллельного выполнения тестов не заставляет их выполняться параллельно. Вам по-прежнему необходимо указать количество параллельных
jobsв вашем объекте оболочки.
Сопоставление шаблонов --rules в стиле Glob
Мы реализовали собственное сопоставление шаблонов в стиле Glob для --rules. Вот поддерживаемые шаблоны:
** is any number of characters, including /, within a pathname
* is zero or more characters within a filename/directory name
? is exactly one character within a filename/directory name
{foo,bar,baz} is any of foo, bar or baz.
\ is an escape character Более сложные настройки для параллельного и последовательного выполнения правил
Если вам нужно более сложное управление тем, что выполняется параллельно, а что последовательно, см. соответствующую документацию по «правилам» в TAP::Harness и TAP::Parser::Scheduler. Если того, что возможно напрямую с помощью prove недостаточно, вы можете написать свою собственную оболочку для прямого доступа к этим функциям.
@INC
prove вводит разделение между «параметрами, переданными Perl, который запускает prove», и «параметрами, переданными Perl, который запускает тесты»; это сделано намеренно. Таким образом, Perl, который запускает тест, начинает с каталогов по умолчанию @INC. Дополнительные каталоги библиотек можно добавить через переменную окружения PERL5LIB, через -Ifoo в PERL5OPT или через параметр -Ilib к prove.
Режим taint
Обычно, когда Perl-программа выполняется в режиме taint, содержимое переменной окружения PERL5LIB не отображается в @INC.
Поскольку PERL5LIB часто используется во время тестирования для добавления каталогов сборки в @INC, prove передает имена любых каталогов, найденных в PERL5LIB, в качестве параметров -I. Это приводит к тому, что PERL5LIB учитывается, даже когда prove выполняется в режиме taint.
ФОРМАТИРОВЩИКИ
Вы можете загрузить пользовательский TAP::Parser::Formatter:
prove --formatter MyFormatter ОБРАБОТЧИКИ ИСТОЧНИКОВ
Вы можете загрузить пользовательские TAP::Parser::SourceHandler, чтобы изменить способ, которым парсер интерпретирует определенные источники TAP.
prove --source MyHandler --source YetAnother t Если вы хотите предоставить конфигурацию источнику, вы можете использовать:
prove --source MyCustom \
--source Perl --perl-option 'foo=bar baz' --perl-option avg=0.278 \
--source File --file-option extensions=.txt --file-option extensions=.tmp t
--source pgTAP --pgtap-option pset=format=html --pgtap-option pset=border=2 Каждый --$source-option параметр должен задавать пару ключ/значение, разделенную =. Если параметр может принимать несколько значений, просто укажите его несколько раз, как в примерах extensions= выше. Если параметр должен быть ссылкой на хэш, укажите значение как вторую пару, разделенную =, как в примерах pset= выше (экранируйте = с обратной косой чертой).
Все --sources объединяются в хэш и передаются в параметр sources «new» в TAP::Harness.
Для получения более подробной информации о том, как конфигурация передаётся в SourceHandlers, см. TAP::Parser::IteratorFactory.
ПЛАГИНЫ
Плагины могут быть загружены с помощью синтаксиса -Pplugin, например:
prove -PMyPlugin Это будет искать модуль под названием App::Prove::Plugin::MyPlugin, а если не найдёт, MyPlugin. Если плагин не будет найден, prove сообщит об ошибке и выйдет.
Вы можете передавать аргументы вашему плагину, добавив =arg1,arg2,etc к имени плагина:
prove -PMyPlugin=fou,du,fafa Пожалуйста, обратитесь к документации по каждому плагину для получения более подробной информации.
Доступные плагины
Для получения актуального списка доступных плагинов, пожалуйста, обратитесь к CPAN:
http://search.cpan.org/search?query=App%3A%3AProve+Plugin
Написание плагинов
См. раздел "PLUGINS" в App::Prove.
© 1993–2023 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.38.0/prove