Code

Initial revision
[nagiosplug.git] / test.pl.in
1 #!/usr/bin/perl -w
2 use strict;
4 my $file = '../Cache';
5 unless (-f "$file.pm") {
6         open(CACHE,">$file.pm") or die "Cannot open cache";
7         print CACHE "package Cache;
8 require Exporter;
9 \@ISA=qw(Exporter);
10 \@EXPORT=qw();
11 1;
12 ";
13         close CACHE;
14 }
16 use Helper;
17 my ($tstdir,$spath,$hostname,$mailhost,$noserver,$nullhost,$quickcheck);
19 use Getopt::Long;
20 GetOptions
21         ("tstdir:s"=>\$tstdir,
22          "spath:s"=>\$spath,
23          "hostname:s"=>\$hostname,
24          "mailhost:s"=>\$mailhost,
25          "noserver:s"=>\$noserver,
26          "nullhost:s"=>\$nullhost,
27          "quickcheck"=>\$quickcheck);
29 $spath = "." unless ($spath);
31 unless ($quickcheck) {
32     
33         $hostname = get_option("hostname","host for FTP/HTTP/UDP tests")        unless ($hostname);
34         $mailhost = get_option("mailhost","host for SMTP/IMAP/POP tests")       unless ($mailhost);
35         $noserver = get_option("noserver","host that rejects above services")   unless ($noserver);
36         # This machine should not be locatable from your network.  Use IP
37         # private addresses like 10.x.x.x and pick one that does not exist
38         # on your LAN/WAN
39         $nullhost = get_option("nullhost","nonexistent IP address (e.g., 10.0.0.0)")    unless ($nullhost);
40 }
42 my @dots;
43 if (@ARGV) {
44         @dots = @ARGV;
45 } else {
46         unless ($tstdir) {
47                 if (-d './t') {
48                         $tstdir = './t';
49                 } else {
50                         $tstdir = $ENV{PWD};
51                         $tstdir = `/bin/pwd` unless defined($tstdir);
52                         chomp $tstdir;
53                         if (defined($tstdir)) {
54                                 $tstdir =~ s|^(.*)/([^/]+)/?$|$1/$2|;
55                                 if (-d "../../$2/t") {
56                                         $tstdir = "../../$2/t";
57                                 } elsif (-d "$tstdir/t") {
58                                         $tstdir = "$tstdir/t";
59                                 }
60                         } else {
61                                 die "Could not get PWD from environment\n";
62                         }
63                 }
64         }
65         $tstdir = './t' unless ($tstdir);
66         opendir(DIR, $tstdir) || die "can't opendir $tstdir: $!";
67         while ($file = readdir(DIR)) {
68                 push @dots, "$tstdir/$file" if ($file =~ m/^[^\.]+\.t$/);
69         }
70         closedir DIR;
71 }
72 my $prog;
73 my $test;
74 my @progs;
75 foreach $test (@dots) {
76         $prog=`basename $test .t`;
77         chomp $prog;
78         if ( -e "$prog" ){
79                 push @progs, "$test";
80         }else{
81                 print "No binary found for $prog\n";
82         }
83 }
85 use Test::Harness;
86 #$Test::Harness::verbose=1;
87 runtests(@progs);