Code

check_host: Allocate a large-enough buffer for the host table.
[nagiosplug.git] / NPTest.pm
index 7ecf74399779bf31aa16215bedb36517f638db21..54a535e77808b167741ba30ca744fcb3266acc5c 100644 (file)
--- a/NPTest.pm
+++ b/NPTest.pm
@@ -21,7 +21,7 @@ use Data::Dumper;
 use Test;
 
 use vars qw($VERSION);
-$VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
+$VERSION = "1556."; # must be all one line, for MakeMaker
 
 =head1 NAME
 
@@ -53,10 +53,14 @@ developer to interactively request test parameter information from the
 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.
 
-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.
+If a parameter needs to be entered and the test is run without a tty 
+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.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
@@ -342,6 +346,9 @@ sub getTestParameter
     return $default;
   }
 
+  # Set "none" if no terminal attached (eg, tinderbox build servers when new variables set)
+  return "" unless (-t STDERR);
+
   my $userResponse = "";
 
   while ( $userResponse eq "" )
@@ -561,7 +568,7 @@ sub TestsFrom
 
   closedir( DIR );
 
-  return @tests;
+  return sort @tests;
 }
 
 # All the new object oriented stuff below
@@ -590,21 +597,38 @@ 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);
 
+       my ($pkg, $file, $line) = caller(0);
+       print "Testing: $command", $/;
        if ($ENV{'NPTEST_DEBUG'}) {
-               my ($pkg, $file, $line) = caller(0);
                print "testCmd: Called from line $line in $file", $/;
-               print "Testing: $command", $/;
                print "Output:  ", $object->output, $/;
                print "Return code: ", $object->return_code, $/;
        }