Chris: Warnungen bei Test anfangen

Guten Morgen!

Fuer meine Module verwende ich gerne Test::More und aehnliches um ordentliche Tests machen zu koennen.

Nun habe ich den Fall, dass eine der zu testenden Funktionen eine Warnung ausgibt und undef liefert, falls bestimmte Parameter ungueltige Werte haben. Der Vollstaendigkeit halber moechte ich auch dieses testen. Die Warnungen erscheinen natuerlich inmitten der Ausgabe von Test::More, der Test auf undef ist positiv:

  
chris@hapi:~/test-module$ perl -wTI. t/mein_test.t  
1\..14  
W ****  $from muss 'bib-id', 'eln' oder 'sigel' sein. at Modul.pm line 98.  
ok 1 - asdf -> ELN  
W ****  $to muss 'bib-id', 'eln', 'sigel' oder 'name' sein. at Modul.pm line 102.  
ok 2 - ELN -> asdf  

Es funktioniert zwar, sieht aber haesslich aus und wirkt natuerlich befremdlich, wenn jemand anders den Test ausfuehrt.

Kann man die Warnungen irgendwie abfangen? Oder sollte ich so etwas gar nicht testen? In der Hilfe zu der Test::-Suite bin ich leider nicht fuendig geworden.

Viele Gruesse
Christian

  1. Moin Moin!

    Ich würde es ungefähr so anfangen (ungetestet):

      
    {  
      my $w='';  
      local $SIG{__WARN__}=sub { $w.=join(' ',@_) };  
      is(AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything(),42,'Answer ok');  
      is($w,'Stupid idea','Proper warning');  
    }  
    
    

    Allerdings dürfte Test::Warn einfacher sein.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".