[Nagiosplug-checkins] SF.net SVN: nagiosplug: [1795] Nagios-Plugin/trunk

tonvoon at users.sourceforge.net tonvoon at users.sourceforge.net
Mon Sep 24 20:45:59 CEST 2007


Revision: 1795
          http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=1795&view=rev
Author:   tonvoon
Date:     2007-09-24 11:45:59 -0700 (Mon, 24 Sep 2007)

Log Message:
-----------
Help, usage and version output go to stdout now, rather than stderr

Modified Paths:
--------------
    Nagios-Plugin/trunk/Changes
    Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm
    Nagios-Plugin/trunk/lib/Nagios/Plugin/Getopt.pm
    Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-01.t
    Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-02.t
    Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-04.t
    Nagios-Plugin/trunk/t/check_stuff.t

Modified: Nagios-Plugin/trunk/Changes
===================================================================
--- Nagios-Plugin/trunk/Changes	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/Changes	2007-09-24 18:45:59 UTC (rev 1795)
@@ -1,5 +1,8 @@
 Revision history for Perl module Nagios::Plugin.
 
+0.21 ??
+  - Help, usage and version output now goes to stdout, not stderr
+
 0.20  5th September 2007
   - Version bump because of CPAN permission problems
 

Modified: Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm
===================================================================
--- Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/lib/Nagios/Plugin/Functions.pm	2007-09-24 18:45:59 UTC (rev 1795)
@@ -8,7 +8,7 @@
 use strict;
 use warnings;
 use File::Basename;
-use Params::Validate qw(validate :types);
+use Params::Validate qw(:types validate);
 use Math::Calc::Units;
 
 # Remember to update Nagios::Plugins as well
@@ -119,14 +119,24 @@
         return Nagios::Plugin::ExitResult->new($code, $output);
     }
 
-    # Print output and exit; die if called via nagios_die and flag set
-    if($_use_die && (caller(1))[3] =~ m/die/) {
-        $!=$code;
-        die($output);
-    } else {
-        print $output;
-        exit $code;
+    _nagios_exit($code, $output);
+}
+
+sub _nagios_exit {
+    my ($code, $output) = @_;
+    # Print output and exit; die if flag set and called via a die in stack backtrace
+    if ($_use_die) {
+      for (my $i = 0;; $i++) {
+        @_ = caller($i);
+        last unless @_;
+        if ($_[3] =~ m/die/) {
+          $! = $code;
+          die($output);
+        }
+      }
     }
+    print $output;
+    exit $code;
 }
 
 # nagios_die( $message, [ $code ])   OR   nagios_die( $code, $message )

Modified: Nagios-Plugin/trunk/lib/Nagios/Plugin/Getopt.pm
===================================================================
--- Nagios-Plugin/trunk/lib/Nagios/Plugin/Getopt.pm	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/lib/Nagios/Plugin/Getopt.pm	2007-09-24 18:45:59 UTC (rev 1795)
@@ -60,9 +60,7 @@
   my $self = shift;
   my ($msg) = @_;
   $msg .= "\n" unless substr($msg, -1) eq "\n";
-  # Set errno to UNKNOWN for die return code
-  local $! = 3;
-  die $msg;
+  Nagios::Plugin::Functions::_nagios_exit(3, $msg);
 }
 
 # Return the given attribute, if set, including a final newline

Modified: Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-01.t
===================================================================
--- Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-01.t	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-01.t	2007-09-24 18:45:59 UTC (rev 1795)
@@ -5,6 +5,9 @@
 use Test::More tests => 76;
 BEGIN { use_ok('Nagios::Plugin::Getopt') };
 
+# Needed to get evals to work in testing
+Nagios::Plugin::Functions::_use_die(1);
+
 my %PARAM = (
     version => '0.01',
     url => 'http://www.openfusion.com.au/labs/nagios/',

Modified: Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-02.t
===================================================================
--- Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-02.t	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-02.t	2007-09-24 18:45:59 UTC (rev 1795)
@@ -5,6 +5,9 @@
 use Test::More tests => 14;
 BEGIN { use_ok('Nagios::Plugin::Getopt') };
 
+# Needed to get evals to work in testing
+Nagios::Plugin::Functions::_use_die(1);
+
 my %PARAM = (
     version => '0.01',
     url => 'http://www.openfusion.com.au/labs/nagios/',

Modified: Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-04.t
===================================================================
--- Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-04.t	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/t/Nagios-Plugin-Getopt-04.t	2007-09-24 18:45:59 UTC (rev 1795)
@@ -5,6 +5,9 @@
 use Test::More tests => 11;
 BEGIN { use_ok('Nagios::Plugin::Getopt') };
 
+# Needed to get evals to work in testing
+Nagios::Plugin::Functions::_use_die(1);
+
 my %PARAM = (
     version => '0.01',
     usage => "Don't use this plugin!",

Modified: Nagios-Plugin/trunk/t/check_stuff.t
===================================================================
--- Nagios-Plugin/trunk/t/check_stuff.t	2007-09-24 00:30:14 UTC (rev 1794)
+++ Nagios-Plugin/trunk/t/check_stuff.t	2007-09-24 18:45:59 UTC (rev 1795)
@@ -2,7 +2,7 @@
 # 
 use strict; use warnings;
 #use Test::More qw(no_plan);
-use Test::More tests => 16;
+use Test::More tests => 14;
 
 my ($r,$args);
 my $s = 't/check_stuff.pl';
@@ -22,24 +22,14 @@
 is 	$?>>8 , 	$e{UNKNOWN}, 		"exits($e{UNKNOWN}) with no args";
 like 	$r,		qr/^$n UNKNOWN/,	"UNKNOWN with no args";
 
+$r = `$s -V`;
+is 	$?>>8 , 	$e{UNKNOWN}, 		"exits($e{UNKNOWN}) with -V arg";
+like 	$r,		qr/^[\w\.]+ \d+/i,	"looks like there's a version";
 
-#TODO:
-SKIP: {
-	local $TODO = q~d'oh! we'll have to redirect STDERR and check it with like() here instead of checking `` which only gets STDIN.  Maybe use IPC::Open3?~;
-	skip "too noisy, see TODO here", 6;
+$r = `$s -h`;
+is 	$?>>8 , 	$e{UNKNOWN}, 		"exits($e{UNKNOWN}) with -h arg";
+like 	$r,		qr/usage/i,	"looks like there's something helpful";  # broken
 
-	$r = `$s -V`;
-	is 	$?>>8 , 	$e{UNKNOWN}, 		"exits($e{UNKNOWN}) with -V arg";
-	like 	$r,		qr/\d+\.\d/i,	"looks like there's a version";  # broken
-	is $r, '', "prints nothing to STDOUT";
-
-	$r = `$s -h`;
-	is 	$?>>8 , 	$e{UNKNOWN}, 		"exits($e{UNKNOWN}) with -h arg";
-	like 	$r,		qr/usage/i,	"looks like there's something helpful";  # broken
-	is $r, '', "prints nothing to STDOUT";
-}
-
-
 $args = " -r 99 ";
 diag "running `$s $args`" if $ENV{TEST_VERBOSE};
 $r = `$s $args`;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Commits mailing list