Autor Thema: Unit Test?  (Gelesen 5067 mal)

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2539
Antw:Unit Test?
« Antwort #75 am: 06 Juni 2020, 01:30:53 »
Wenn Du mir einen Link auf Deinen automatisierten Testprozess schicken könntest, kann ich ja schauen ob/wie ich den integrieren kann.


Ich hatte gedacht, dass ich vielleicht etwas allgemeingültiges integrieren könnte. Daher auch die Frage, ob die Tests schon in FHEM integriert sind.

Ich deploye nichts, daher auch keine pipeline. Wäre aber mal eine Idee, ob ich nicht ins SVN deployen könnte. hmmmmm  8)
https://github.com/RFD-FHEM/RFFHEM/actions/runs/125311624
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1387
Antw:Unit Test?
« Antwort #76 am: 23 August 2020, 20:42:04 »
Hallo Rudi,

könntest Du die FhemTestUtils um eine Funktion erweitern, die die Zeit einer im Log gefundenen Zeile liefert?
z.B.:
sub FhemTestUtils_getLogTime {
    my $arg = shift;
    foreach my $line (@logs) {
        if ($line =~ m{ \A ([0-9\.]+ \s [0-9\:\.]+) \s .* $arg .* }xms) {
            my @a = split("[T: -\.]", $1);
            return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1) + $a[6]/1000;
        }
    }
    return;
}

Ich habe so für Modbus die Möglichkeit die Timing-Parameter zu testen.

Gruss / Thanx
    Stefan

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22806
Antw:Unit Test?
« Antwort #77 am: 24 August 2020, 12:24:46 »
Danke fuer den Patch, habs hinzugefuegt und dokumentiert.
Ich musste es etwas anpassen, u.a. weil mseclog nicht immer aktiviert ist: kannst Du es bitte testen.

Apropos Unit-Test:
- die HTTPMOD Tests benoetigen die JSON und Test::V0 perl Module.  Ich wuensche mir, dass das Fehlen von optionalen perl Modulen kein Fehler, sondern eine Bemerkung beim Test produziert, so wie bei etlichen Perl-Modulen.
- selbst nach Installieren des JSON Moduls bleiben 3 HTTPMOD Fehler uebrig.

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1387
Antw:Unit Test?
« Antwort #78 am: 25 August 2020, 16:52:34 »
Danke fuer den Patch, habs hinzugefuegt und dokumentiert.
Ich musste es etwas anpassen, u.a. weil mseclog nicht immer aktiviert ist: kannst Du es bitte testen.
funktioniert. Vielen Dank!

Zitat
Apropos Unit-Test:
- die HTTPMOD Tests benoetigen die JSON und Test::V0 perl Module.  Ich wuensche mir, dass das Fehlen von optionalen perl Modulen kein Fehler, sondern eine Bemerkung beim Test produziert, so wie bei etlichen Perl-Modulen.
- selbst nach Installieren des JSON Moduls bleiben 3 HTTPMOD Fehler uebrig.

Das ist ein guter Punkt. Wenn ein Test JSON-Features von HTTPMOD testet, dann schlagen die natürlich fehl, wenn die dafür nötigen Libs nicht vorhanden sind.
Ich würde das so umbauen, dass diese Tests nur noch ausgeführt werden wenn die Libs auch da sind und andernfalls eine Meldung erzeugen.

Was wäre denn der bevorzugte Melde-Weg? Log3 oder gibt es da etwas Test-spezifisches?

Die offenen Fehler sind übrigens echte Bugs, die in der nächsten HTTPMOD-Version behoben sind (gerade im Forum mit der Bitte um Tests von Anwendern)

Gruß
    Stefan

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22806
Antw:Unit Test?
« Antwort #79 am: 25 August 2020, 17:42:52 »
Zitat
Was wäre denn der bevorzugte Melde-Weg? Log3 oder gibt es da etwas Test-spezifisches?
Was Test-spezifisches, was man beim ausfuehren von prove sieht.
Wie das geht, muesste ich auch erforschen.

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2539
Antw:Unit Test?
« Antwort #80 am: 25 August 2020, 18:38:30 »
Da gibt es was von der Stange um auf Packages zu prüfen:

https://metacpan.org/pod/Test2::Require::Module

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1387
Antw:Unit Test?
« Antwort #81 am: 28 August 2020, 19:44:38 »
Hallo,

ich habs jetzt so gelöst:
##############################################
# test extractAllReadings
##############################################
use strict;
use warnings;
use Test::More;

eval "use JSON";
if ($@) {
    plan skip_all => "This test checks an optional JSON-Feature of HTTPMOD and can only be run with the JSON library installed. Please install JSON Library (apt-get install libjson-perl)";
} else {
    plan tests => 3;
}
...

benötigt kein Test2 und zeigt bei prove eine nette Meldung an:
pi@PI-Fhem:/opt/fhem $ prove `find t/FHEM/98_HTTPMOD -name \*.t`
t/FHEM/98_HTTPMOD/40_maxAge.t .......... ok
t/FHEM/98_HTTPMOD/99_evalExpr.t ........ ok
t/FHEM/98_HTTPMOD/50_Replacements.t .... ok
t/FHEM/98_HTTPMOD/20_extractAllJSON.t .. skipped: This test checks an optional JSON-Feature of HTTPMOD and can only be run with the JSON library installed. Please install JSON Library (apt-get install libjson-perl)
t/FHEM/98_HTTPMOD/90_SmallFeatures.t ... ok
t/FHEM/98_HTTPMOD/30_requestExpr.t ..... ok
t/FHEM/98_HTTPMOD/31_Regexes.t ......... ok
t/FHEM/98_HTTPMOD/10_Redirects.t ....... ok
t/FHEM/98_HTTPMOD/36_JSONExpr.t ........ skipped: This test checks an optional JSON-Feature of HTTPMOD and can only be run with the JSON library installed. Please install JSON Library (apt-get install libjson-perl)
All tests successful.
Files=9, Tests=39,  9 wallclock secs ( 0.28 usr  0.00 sys +  7.25 cusr  0.34 csys =  7.87 CPU)
Result: PASS

Um in einem Test erst mal zu prüfen, ob ein Modul da ist mache ich das mit:
use_ok ('FHEM::HTTPMOD::Utils', qw(:all));

auch das geht mit Test::More. Test2 habe ich gar nicht verwendet, da das ja auch wieder fehlen könnte.

Gruss
   Stefan

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2539
Antw:Unit Test?
« Antwort #82 am: 28 August 2020, 20:04:14 »
Geht natürlich auch so mit eval, meine 5ct:
Verwende gleich Test2 wenn Du noch am Anfang stehst, das bringt viele Vereinfachungen mit und wird weiter entwickelt.

Gruß Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22806
Antw:Unit Test?
« Antwort #83 am: 28 August 2020, 20:35:07 »
@Stefan: Danke!