################################################## # eigene Klassen/Dateien/Module einbinden und Existenz überprüfen my @required_config_files = ("test_definitions", "rcconfig"); # zu überprüfende Module/Klassen my $file; # Hilfsvariable foreach $file (@required_config_files){ # für jedes angegebene Modul eval"use $file"; # Versuche Modul zu laden if($@){# wenn es einen Fehler beim laden des Moduls gibt, Fehlermeldung ausgeben print "

$file - Datei/Modul konnte nicht geladen werden:
$@

\n"; } } if($@){ # wenn es beim laden der Konfiguration Fehler gab print "\n"; # HTML-Ende ausgeben exit; # Programm beenden } else{ print"

Konfiguration wurde erfolgreich geladen

"; } # Einbinden der Testscript-Konfiguration my $test_def = test_definitions->new(); my $test_ref = $test_def->getTests(); ########################################## # überprüfen der Test-Script-Configuration und Ausführung der Tests my %tests = %$test_ref; # Test-Definitionen dereferenzieren my $test; # Hilfsvariable für Tests-Hash my $key; # Hilfsvariable für Tests-Hash my @errors; # Fehler-Container my $error; # Hilfsvariable zur Fehlerausgabe my $UA = new LWP::UserAgent; my $count_tests = keys %tests; # Zählvariable my $count_ok = 0;# Zählvariable zum überprüfen erfolgreicher Tests my $count_fail = 0; # Zählvariable für Fehler my $config_error_flag; # Variable zum markieren fehlerhafter Test-Konfigurationen my $script_error_flag; # Variable zum markieren fehlender Scripte my $script_file; # Alle zu überprüfenden Keys festlegen my @required_keys = ('title','legend','type'); # hier wird jeder einzelne Schlüssel des Tests überprüft foreach $test (sort keys %tests){ # jeden einzelnen Test holen $config_error_flag = 0; # Fehler-Flags zurücksetzen (könnte aus vorhergehenden Überprüfungen gesetzt sein) $script_error_flag = 0; my @missing_keys = (); # Hilfsarrays Script- und Konfigurations-Überprüfung my @missing_scripts = (); foreach $key (@required_keys){ # für jeden Schlüssel unless($tests{$test}->{$key}){ # Schlüssel des geholten Tests überprüfen # falls nicht gesetzt oder nicht vorhanden zur Liste fehlender schlüssel hinzufügen push(@missing_keys,$key); $config_error_flag = 1; # und Test als Fehlerhaft konfiguriert markieren } } # Überprüfen ob Test-Script vorhanden $script_file = "$source_cgi$dir_suite$script_dir/".$tests{$test}->{type}."/$test"; # generierung vollständiger Dateiname unless(-e $script_file){ # wenn Datei nicht vorhanden push(@missing_scripts,$test); # Dateinamen zur Liste fehlender Dateien kopieren $script_error_flag = 1; # Test als Script-Fehlend markieren } if($config_error_flag){ # überprüfen ob es Konfigurationsfehler gab # falls ja, Testbezogene Fehlermeldung generieren my $errStr = "$test: configuration: Keys not defined: ".join(',',@missing_keys)."
"; # Fehler-Meldung zur Fehler-Liste hinzufügen push(@errors,$errStr); unless($script_error_flag){ # wenn keine Scripte Fehlen next; # zum nächsten Test springen } } if($script_error_flag){ # Überprüfen ob Script gefehlt hat my $errStr = "$test: Script: File not found: ".join(',',@missing_scripts)."
"; push(@errors,$errStr); next; } ############################################### # An dieser Stelle wird der Test dann ausgeführt (zB per require f_nl_order.cgi) my @results = (); print "

$test:"; print"

"; if(require $script_file){ $count_ok++; } } # Ausgabe Anzahl der definierten Tests print"Anzahl definierter Tests: $count_tests
"; # Ausgabe erfolgreicher Tests print "Anzahl erfolgreich abgeschlossener Testst: $count_ok"; # Ausgabe der Fehler $count_fail = @errors; # Fehleranzahl ermitteln print"

Es gab $count_fail Fehler:
"; # Fehleranzahl ausgeben foreach $error (@errors){ # für jede eingetragene Fehlermeldung print $error; # diese ausgeben } print"

"; # Ende HTML print "\n";