summaryrefslogtreecommitdiffstats
path: root/NPTest.pm
diff options
context:
space:
mode:
Diffstat (limited to 'NPTest.pm')
-rw-r--r--NPTest.pm51
1 files changed, 30 insertions, 21 deletions
diff --git a/NPTest.pm b/NPTest.pm
index 9b856171..2baed0b0 100644
--- a/NPTest.pm
+++ b/NPTest.pm
@@ -1,7 +1,7 @@
1package NPTest; 1package NPTest;
2 2
3# 3#
4# Helper Functions for testing Nagios Plugins 4# Helper Functions for testing Monitoring Plugins
5# 5#
6 6
7require Exporter; 7require Exporter;
@@ -25,14 +25,14 @@ $VERSION = "1556."; # must be all one line, for MakeMaker
25 25
26=head1 NAME 26=head1 NAME
27 27
28NPTest - Simplify the testing of Nagios Plugins 28NPTest - Simplify the testing of Monitoring Plugins
29 29
30=head1 DESCRIPTION 30=head1 DESCRIPTION
31 31
32This modules provides convenience functions to assist in the testing 32This modules provides convenience functions to assist in the testing
33of Nagios Plugins, making the testing code easier to read and write; 33of Monitoring Plugins, making the testing code easier to read and write;
34hopefully encouraging the development of a more complete test suite for 34hopefully encouraging the development of a more complete test suite for
35the Nagios Plugins. It is based on the patterns of testing seen in the 35the Monitoring Plugins. It is based on the patterns of testing seen in the
361.4.0 release, and continues to use the L<Test> module as the basis of 361.4.0 release, and continues to use the L<Test> module as the basis of
37testing. 37testing.
38 38
@@ -92,7 +92,7 @@ Testing of results would be done in your test script, not in this module.
92This function is obsolete. Use C<testCmd()> instead. 92This function is obsolete. Use C<testCmd()> instead.
93 93
94This function attempts to encompass the majority of test styles used 94This function attempts to encompass the majority of test styles used
95in testing Nagios Plugins. As each plug-in is a separate command, the 95in testing Monitoring Plugins. As each plug-in is a separate command, the
96typical tests we wish to perform are against the exit status of the 96typical tests we wish to perform are against the exit status of the
97command and the output (if any) it generated. Simplifying these tests 97command and the output (if any) it generated. Simplifying these tests
98into a single function call, makes the test harness easier to read and 98into a single function call, makes the test harness easier to read and
@@ -132,7 +132,7 @@ of either C<Test::ok(...)> or C<Test::skip(...)>, so remember this
132when counting the number of tests to place in the C<Test::plan(...)> 132when counting the number of tests to place in the C<Test::plan(...)>
133call. 133call.
134 134
135Many Nagios Plugins test network services, some of which may not be 135Many Monitoring Plugins test network services, some of which may not be
136present on all systems. To cater for this, C<checkCmd(...)> allows the 136present on all systems. To cater for this, C<checkCmd(...)> allows the
137tester to define exceptions based on the command's exit status. These 137tester to define exceptions based on the command's exit status. These
138exceptions are provided to skip tests if the test case developer 138exceptions are provided to skip tests if the test case developer
@@ -199,7 +199,7 @@ Copyright (c) 2005 Peter Bray. All rights reserved.
199 199
200This package is free software and is provided "as is" without express 200This package is free software and is provided "as is" without express
201or implied warranty. It may be used, redistributed and/or modified 201or implied warranty. It may be used, redistributed and/or modified
202under the same terms as the Nagios Plugins release. 202under the same terms as the Monitoring Plugins release.
203 203
204=cut 204=cut
205 205
@@ -347,7 +347,7 @@ sub getTestParameter
347 } 347 }
348 348
349 # Set "none" if no terminal attached (eg, tinderbox build servers when new variables set) 349 # Set "none" if no terminal attached (eg, tinderbox build servers when new variables set)
350 return "" unless (-t STDERR); 350 return "" unless (-t STDIN);
351 351
352 my $userResponse = ""; 352 my $userResponse = "";
353 353
@@ -438,7 +438,7 @@ sub LoadCache
438 438
439 chomp($fileContents); 439 chomp($fileContents);
440 my( $contentsRef ) = eval $fileContents; 440 my( $contentsRef ) = eval $fileContents;
441 %CACHE = %{$contentsRef}; 441 %CACHE = %{$contentsRef} if (defined($contentsRef));
442 442
443 } 443 }
444 444
@@ -494,26 +494,35 @@ sub SetCacheFilename
494 494
495sub DetermineTestHarnessDirectory 495sub DetermineTestHarnessDirectory
496{ 496{
497 my( $userSupplied ) = @_; 497 my( @userSupplied ) = @_;
498 my @dirs;
498 499
499 # User Supplied 500 # User Supplied
500 if ( defined( $userSupplied ) && $userSupplied ) 501 if ( @userSupplied > 0 )
501 { 502 {
502 if ( -d $userSupplied ) 503 for my $u ( @userSupplied )
503 { 504 {
504 return $userSupplied; 505 if ( -d $u )
505 } 506 {
506 else 507 push ( @dirs, $u );
507 { 508 }
508 return undef; # userSupplied is invalid -> FAIL
509 } 509 }
510 } 510 }
511 511
512 # Simple Case : "t" is a subdirectory of the current directory 512 # Simple Cases: "t" and tests are subdirectories of the current directory
513 if ( -d "./t" ) 513 if ( -d "./t" )
514 { 514 {
515 return "./t"; 515 push ( @dirs, "./t");
516 } 516 }
517 if ( -d "./tests" )
518 {
519 push ( @dirs, "./tests");
520 }
521
522 if ( @dirs > 0 )
523 {
524 return @dirs;
525 }
517 526
518 # To be honest I don't understand which case satisfies the 527 # To be honest I don't understand which case satisfies the
519 # original code in test.pl : when $tstdir == `pwd` w.r.t. 528 # original code in test.pl : when $tstdir == `pwd` w.r.t.
@@ -526,7 +535,7 @@ sub DetermineTestHarnessDirectory
526 535
527 if ( $pwd =~ m|/t$| ) 536 if ( $pwd =~ m|/t$| )
528 { 537 {
529 return $pwd; 538 push ( @dirs, $pwd );
530 539
531 # The alternate that might work better is 540 # The alternate that might work better is
532 # chdir( ".." ); 541 # chdir( ".." );
@@ -535,7 +544,7 @@ sub DetermineTestHarnessDirectory
535 # to be tested is in the current directory (ie "./check_disk ....") 544 # to be tested is in the current directory (ie "./check_disk ....")
536 } 545 }
537 546
538 return undef; 547 return @dirs;
539} 548}
540 549
541sub TestsFrom 550sub TestsFrom