aboutsummaryrefslogtreecommitdiff
path: root/NPTest.pm
diff options
context:
space:
mode:
Diffstat (limited to 'NPTest.pm')
-rw-r--r--NPTest.pm72
1 files changed, 60 insertions, 12 deletions
diff --git a/NPTest.pm b/NPTest.pm
index 8f20678b..440e7343 100644
--- a/NPTest.pm
+++ b/NPTest.pm
@@ -31,7 +31,7 @@ NPTest - Simplify the testing of Nagios Plugins
This modules provides convenience functions to assist in the testing
of Nagios Plugins, making the testing code easier to read and write;
-hopefully encouraging the development of more complete test suite for
+hopefully encouraging the development of a more complete test suite for
the Nagios Plugins. It is based on the patterns of testing seen in the
1.4.0 release, and continues to use the L<Test> module as the basis of
testing.
@@ -80,8 +80,17 @@ that, such defaults are not stored in the cache, as there is currently
no mechanism to edit existing cache entries, save the use of text
editor or removing the cache file completely.
+=item C<testCmd($command)>
+
+Call with NPTest->testCmd("./check_disk ...."). This returns a NPTest object
+which you can then run $object->return_code or $object->output against.
+
+Testing of results would be done in your test script, not in this module.
+
=item C<checkCmd(...)>
+This function is obsolete. Use C<testCmd()> instead.
+
This function attempts to encompass the majority of test styles used
in testing Nagios Plugins. As each plug-in is a separate command, the
typical tests we wish to perform are against the exit status of the
@@ -213,21 +222,14 @@ sub checkCmd
{
my( $command, $desiredExitStatus, $desiredOutput, %exceptions ) = @_;
- my $output = `${command}`;
- my $exitStatus = $? >> 8;
+ my $result = NPTest->testCmd($command);
+
+ my $output = $result->output;
+ my $exitStatus = $result->return_code;
$output = "" unless defined( $output );
chomp( $output );
- if ( exists( $ENV{'NPTEST_DEBUG'} ) && $ENV{'NPTEST_DEBUG'} )
- {
- my( $pkg, $file, $line ) = caller(0);
-
- print "checkCmd: Called from line $line in $file\n";
- print "Testing : ${command}\n";
- print "Result : ${exitStatus} AND '${output}'\n";
- }
-
my $testStatus;
my $testOutput = "continue";
@@ -547,7 +549,53 @@ sub TestsFrom
return @tests;
}
+# All the new object oriented stuff below
+sub new {
+ my $type = shift;
+ my $self = {};
+ return bless $self, $type;
+}
+
+# Accessors
+sub return_code {
+ my $self = shift;
+ if (@_) {
+ return $self->{return_code} = shift;
+ } else {
+ return $self->{return_code};
+ }
+}
+sub output {
+ my $self = shift;
+ if (@_) {
+ return $self->{output} = shift;
+ } else {
+ return $self->{output};
+ }
+}
+
+sub testCmd {
+ my $class = shift;
+ my $command = shift or die "No command passed to testCmd";
+ my $object = $class->new;
+
+ my $output = `$command`;
+ chomp $output;
+
+ $object->output($output);
+ $object->return_code($? >> 8);
+
+ 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, $/;
+ }
+
+ return $object;
+}
1;
#