2009-12-07 2 views
1

J'ai un script de test Test::More pour un module que nous avons fait. Lorsque vous exécutez le script de test par lui-même, cela fonctionne comme prévu. Puisqu'il y a plusieurs tests à exécuter, j'ai créé un fichier Test::Harness qui exécute tous les scripts. Cependant, lors de l'exécution à partir du Test::Harnessruntests, le script renvoie des erreurs. Pendant le débogage, j'ai essayé d'exécuter le script en utilisant des backtics et cela a fonctionné. Donc, la commande runtest a provoqué les erreurs.Pourquoi mes tests de module Perl échouent-ils lorsque je les lance avec Test :: Harness :: runtests?

Le code du harnais est assez simple:

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

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

Les erreurs proviennent d'un module CPAN nous utilisons, Pod::HtmlEasy.

La solution que j'espère est pour un moyen d'exécuter le Test::Harness sans obtenir les erreurs.

La sortie du test:

 
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              
+2

Avez-vous essayé de mettre à jour Pod :: HtmlEasy? Il semble que regex semble différent ces jours-ci et le fichier Changes indique que la dernière version a une solution pour "surmonter les échecs de test CPAN apparemment aléatoires". – innaM

+0

@Manni; Merci, cela semble être une voie à suivre. Nous utilisions la dernière version du développeur original, 0,07 à partir de 2004. L'utilisation de la dernière version a introduit d'autres problèmes que nous devons résoudre si ... Comme certains changements non-rétrocompatibles. Un pas en avant, un pas en arrière. :) En tout cas, merci. – Fredrik

Répondre

2

La sortie que vous avez collé montre vos tests qui passe. Les messages qui sont sortis sont des avertissements. Si vous n'obtenez pas les avertissements lorsque vous exécutez perl test1.pl, c'est parce que vous (ou le module que vous utilisez) n'avez pas activé les avertissements. Apparemment, Test :: Harness appelle perl avec les flags -w, et vous obtenez les warnings, puisque -w active les warnings globalement. ("Utiliser les avertissements" ne les active que dans la portée lexicale "Avertir les avertissements".)

+0

Bien, j'ai raté celui-là. Ajouter le -w au script de test a donné exactement les mêmes logs. Donc au moins cela signifie que le test :: harness ne présente pas de faute. – Fredrik

3

Pourquoi créer êtes-vous votre propre script de test? Placez simplement votre module dans la configuration de distribution standard et exécutez-le à partir du script de génération. En outre, vous pouvez simplement utiliser prove pour faire ce que vous faites déjà.

5

Pourquoi ne pas simplement laisser Test :: Harness construire un environnement de test à la volée, à partir de la ligne de commande?

prove test*.pl 

Ou si vous gardez vos tests dans le répertoire t/ comme est standard:

prove -r t/ 
+0

Merci! Prove a bien fonctionné. Pour l'instant, l'infrastructure de test repose sur un fichier test :: harness qui répertorie tous les scripts de test, mais nous planifions un do-over, donc je vais le suggérer. – Fredrik

+1

Il semble que vous vouliez mon Test :: Manifest si vous voulez lister les tests à exécuter. –

Questions connexes