Почему мои тесты модуля Perl не проходят, когда я запускаю их с Test :: Harness :: runtests? - PullRequest
1 голос
/ 07 декабря 2009

У меня есть Test :: More тестовый скрипт для модуля, который мы сделали. При запуске тестового скрипта он работает так, как ожидалось. Поскольку нужно выполнить несколько тестов, я создал файл Test :: Harness , который запускает все сценарии. Однако при выполнении из Test :: Harness runtests скрипт возвращает ошибки.

Во время отладки я пытался запустить скрипт, используя backtics, и это сработало. Таким образом, команда runtest вызвала ошибки.

Код ремня безопасности довольно прост:

(perl) -w
use strict;
use warnings;
use Test::Harness;

my @tests = ('test1.pl', 'test2.pl', 'test3.pl');
runtests(@tests);

Ошибки происходят из используемого нами модуля cpan, Pod :: HtmlEasy .

Решение, на которое я надеюсь, заключается в том, чтобы запустить Test :: Harness без ошибок.

Выход из теста:

test1..........False [] range "\w-" in regex; marked by  line 20.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 422,  line 20.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 363,  line 22.
False [] range "\w-" in regex; marked by  line 22.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 488,  line 24.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 363,  line 26.
close() on unopened filehandle PODIN at /app/perl/lib/Pod/HtmlEasy.pm line 248.
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 318.
(...)
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 396.
test1..........ok 2/3close() on unopened filehandle PODIN at /app/perl/lib/Pod/HtmlEasy.pm line 248.
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 318.
(...)
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 396.
test1..........ok                                                      

Ответы [ 3 ]

5 голосов
/ 07 декабря 2009

Почему бы просто не позволить Test :: Harness создавать тестовую среду на лету из командной строки?

prove test*.pl

Или, если вы храните свои тесты в каталоге t/, как обычно:

prove -r t/
3 голосов
/ 07 декабря 2009

Почему вы создаете свой собственный скрипт тестирования? Просто поместите ваш модуль в стандартную настройку дистрибутива и запустите его из скрипта сборки. Кроме того, вы можете просто использовать prove, чтобы делать то, что вы уже делаете.

2 голосов
/ 08 декабря 2009

Результат, который вы вставили, показывает прохождение ваших тестов. Выводимые сообщения являются предупреждениями. Если вы не получаете предупреждения при запуске perl test1.pl, это потому, что вы (или используемый вами модуль) не включили предупреждения. Очевидно, Test :: Harness вызывает perl с флагами -w, и вы получаете предупреждения, так как -w включает предупреждения глобально. («Использовать предупреждения» включает их только в лексической области, где указано «Использовать предупреждения».)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...