#perl #testing #module #manifest
#perl #тестирование #модуль #манифест
Вопрос:
Когда Module::Starter инициализирует проект, он создает тест с именем manifest.t
.
#!perl -T
use strict;
use warnings;
use Test::More;
unless ( $ENV{RELEASE_TESTING} ) {
plan( skip_all => "Author tests not required for installation" );
}
eval "use Test::CheckManifest 0.9";
plan skip_all => "Test::CheckManifest 0.9 required" if $@;
ok_manifest();
Когда вы запускаете тесты с Build test
, вот часть выходных данных:
t00-load.t ....... ok
tboilerplate.t ... ok
tmanifest.t ...... skipped: Author tests not required for installation
Я понимаю результат в узком смысле ( $ENV{RELEASE_TESTING}
не задан, поэтому тесты пропускаются), но я не полностью понимаю общую картину. Каков предполагаемый процесс разработки? Я предполагаю, что это хорошая идея — запустить тесты, чтобы подтвердить точность манифеста моего модуля. Должен ли я устанавливать эту переменную среды? Если да, то на каком этапе процесса разработки?
Ответ №1:
Во многих дистрибутивах модулей есть тесты, которые проверяют не то, работает ли код, а то, находится ли дистрибутив в подходящем состоянии для выпуска. Такие вещи, как актуальность МАНИФЕСТА, были ли все функции задокументированы в POD и т.д.
Для экономии времени эти тесты могут быть записаны так, чтобы пропускать себя, если не установлена переменная среды RELEASE_TESTING. Это неофициальный стандарт. Таким образом, эти тесты не запускаются, когда люди устанавливают модуль, и не запускаются, когда автор просто проверяет, не нарушило ли что-нибудь изменение кода.
Вы должны выполнить RELEASE_TESTING=1 make test
(или эквивалент сборки) перед выпуском вашего dist. Если вы используете Dist::Zilla (что я настоятельно рекомендую), вы можете запускать тесты выпуска с dzil test --release
. Этот флаг также устанавливается автоматически плагином TestRelease, который вам обязательно следует использовать, если вы используете dzil.
Другими переменными среды, обычно используемыми для управления тестированием, являются AUTOMATED_TESTING и AUTHOR_TESTING. AUTOMATED_TESTING устанавливается тестировщиками CPAN, выполняющими автоматизированные тесты smoke.
Комментарии:
1. Спасибо за четкое объяснение и предложение попробовать Dist::Zilla.