X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=NPTest.pm;h=d4542ddc2cc5348c4b41a1b13b3e879b6e53be30;hb=bd2cc1811bdea7fe77acab43e281dd3915882b24;hp=e321623bff12fe0bebae610f277d5e50a157217f;hpb=9c89de133bb6271765075b320a98a6ca9d827202;p=nagiosplug.git diff --git a/NPTest.pm b/NPTest.pm index e321623..d4542dd 100644 --- a/NPTest.pm +++ b/NPTest.pm @@ -54,13 +54,13 @@ user. The user can accept the developer's default value or reply "none" which will then be returned as "" for the test to skip if appropriate. If a parameter needs to be entered and the test is run without a tty -attached (such as a cronjob), this routine will die causing the test to -fail. +attached (such as a cronjob), the parameter will be assigned as if it +was "none". Tests can check for the parameter and skip if not set. -Responses are stored in an external, file-based -cache so subsequent test runs will use these values. The user is able -to change the values by amending the values in the file /var/tmp/NPTest.pm, -or by setting the appropriate environment variable before running the test. +Responses are stored in an external, file-based cache so subsequent test +runs will use these values. The user is able to change the values by +amending the values in the file /var/tmp/NPTest.cache, or by setting +the appropriate environment variable before running the test. The option exists to store parameters in a scoped means, allowing a test harness to a localise a parameter should the need arise. This @@ -346,7 +346,8 @@ sub getTestParameter return $default; } - die "Need to manually enter test parameter $param" unless (-t STDERR); + # Set "none" if no terminal attached (eg, tinderbox build servers when new variables set) + return "" unless (-t STDERR); my $userResponse = ""; @@ -567,7 +568,7 @@ sub TestsFrom closedir( DIR ); - return @tests; + return sort @tests; } # All the new object oriented stuff below @@ -596,16 +597,33 @@ sub output { } } +sub perf_output { + my $self = shift; + $_ = $self->{output}; + /\|(.*)$/; + return $1 || ""; +} + +sub only_output { + my $self = shift; + $_ = $self->{output}; + /(.*?)\|/; + return $1 || ""; +} + sub testCmd { my $class = shift; my $command = shift or die "No command passed to testCmd"; my $object = $class->new; my $output = `$command`; + $object->return_code($? >> 8); + $_ = $? & 127; + if ($_) { + die "Got signal $_ for command $command"; + } chomp $output; - $object->output($output); - $object->return_code($? >> 8); if ($ENV{'NPTEST_DEBUG'}) { my ($pkg, $file, $line) = caller(0);