Как проверить один провальный тест при сборке perl - PullRequest
2 голосов
/ 21 февраля 2020

Эта проблема обычно возникает при попытке запустить make test и видит, что один тест не пройден. В README описывается, что каждый тест можно запускать по отдельности, но нет четкого указания, как это сделать.

Ответы [ 3 ]

2 голосов
/ 22 февраля 2020

make test использует скрипт с именем TEST в тестовом каталоге (t). Чтобы реплицировать make test одного файла, можно использовать этот сценарий следующим образом:

[.../perl/t]$ ./perl -I../lib TEST op/array.t
t/op/array ... ok
All tests successful.
Elapsed: 0 sec
u=0.01  s=0.00  cu=0.03  cs=0.02  scripts=1  tests=194

Если вы хотите увидеть необработанный вывод тестового сценария, вы можете запустить perl следующим образом:

[.../perl/t]$ ./perl -I../lib op/array.t
1..194
ok 1
ok 2
ok 3
...
ok 192 - holes passed to sub do not lose their position (multideref, mg)
ok 193 - holes passed to sub do not lose their position (aelem)
ok 194 - holes passed to sub do not lose their position (aelem, mg)

Приведенная выше информация и многое другое можно найти в perlhack .

Этот документ объясняет, как работает Perl разработка. Он включает в себя сведения о Perl 5 списках рассылки Porters, репозитории Perl, трекере ошибок Perlbug, рекомендациях по исправлению и комментариях к философии разработки Perl.


Обратите внимание, что вам нужно запустить make test_prep до того, как вышеперечисленные команды сработают. (Если вы запустили make test, вы уже запустили make test_prep.)

1 голос
/ 21 февраля 2020

Чтобы запустить один тестовый сценарий, используйте perl или лучше prove. Предполагая, что вы находитесь в базовом каталоге модуля:

prove -lv t/some-test-script.t

Это запустит тестовый скрипт для библиотек в ./lib, с откатом к библиотекам, доступным для вашей установки Perl.

Если вы хотите использовать библиотеки сборки, созданные с помощью make, то это:

prove -bv t/some-test-script.t

Теперь тестовый скрипт будет запускаться для библиотек в ./blib, возвращаясь к библиотекам, установленным для вашего Perl.

Тестовые сценарии, как правило, представляют собой просто Perl сценарии, которые находятся в t/ или xt/ или некотором аналогичном пути в структуре каталогов дистрибутива. Таким образом, вы также можете запускать их только с помощью Perl:

perl -Iblib t/some-test-script.t

Но при проверке получается более качественная сводная информация о тестировании и цветовое кодирование.

Это примерно так же гранулярно, как вы можете получить, если тесты не выполняются. написано, чтобы позволить нацеливание на определенные c сегменты в тестовом скрипте. Если вам нужно указать определенный тест c в тестовом скрипте, вам обычно придется копаться в самом коде теста.

1 голос
/ 21 февраля 2020

Запустите ./perl harness ../foo/boo.t в каталоге t, с foo/boo именем неудачного теста.

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