t/010-run.t
changeset 3 bdbd5e99f85a
parent 2 bc2f76c0908a
equal deleted inserted replaced
2:bc2f76c0908a 3:bdbd5e99f85a
     2 use warnings;
     2 use warnings;
     3 
     3 
     4 use Test::More;
     4 use Test::More;
     5 use Test::Cmd;
     5 use Test::Cmd;
     6 
     6 
     7 my $test = Test::Cmd->new(prog => "blib/script/checkfs", workdir => "", verbose => $ENV{TEST_VERBOSE} > 1);
     7 my $test = Test::Cmd->new(
       
     8     prog    => "blib/script/checkfs",
       
     9     workdir => "",
       
    10     verbose => $ENV{TEST_VERBOSE} > 1
       
    11 );
     8 ok($test, "test environment");
    12 ok($test, "test environment");
     9 
    13 
    10 # $ENV{HARNESS_ACTIVE}
    14 # $ENV{HARNESS_ACTIVE}
    11 
    15 
    12 my $rc;
    16 my $rc;
    24     is($rc, 0, "exit 0");
    28     is($rc, 0, "exit 0");
    25     like($test->stdout, qr/^Usage:.*^Options/ms, "Usage and Options");
    29     like($test->stdout, qr/^Usage:.*^Options/ms, "Usage and Options");
    26     is($test->stderr, "", "stderr should be empty");
    30     is($test->stderr, "", "stderr should be empty");
    27 };
    31 };
    28 
    32 
    29 
       
    30 $test->run(args => "-m");
    33 $test->run(args => "-m");
    31 $rc = $? >> 8;
    34 $rc = $? >> 8;
    32 subtest "run w/ -m" => sub {
    35 subtest "run w/ -m" => sub {
    33     is($rc, 0, "exit 0");
    36     is($rc, 0, "exit 0");
    34     like($test->stdout, qr/^N.*^S.*^O/msi, "looks like manpage");
    37     like($test->stdout, qr/^N.*^S.*^O/msi, "looks like manpage");
    35     is($test->stderr, "", "stderr should be empty");
    38     is($test->stderr, "", "stderr should be empty");
    36 };
    39 };
    37 
    40 
    38 # create a fake df
    41 # create a fake df
       
    42 my $head =
       
    43   "Filesystem         1024-blocks      Used Available Capacity Mounted on";
       
    44 my @data = (
       
    45     { in => "/dev/mapper/jumper-root 7970992 6769920 801696 90% /", r => 2 },
       
    46     { in => "tmpfs 1927372 12 1927360 1% /lib/init/rw",             r => 0 },
       
    47     { in => "varrun 1927372 168 1927204 1% /var/run",               r => 0 },
       
    48     { in => "varlock 1927372 0 1927372 0% /var/lock",               r => 0 },
       
    49     { in => "udev 1921416 256 1921160 1% /dev",                     r => 0 },
       
    50     { in => "tmpfs 1927372 40 1927332 1% /dev/shm",                 r => 0 },
       
    51     {
       
    52         in => "/dev/mapper/jumper-home 30963708 27663468 1727736 95% /home",
       
    53         r  => 2
       
    54     },
       
    55     { in => "/dev/sda1 235021 35434 187453 16% /boot",                r => 0 },
       
    56     { in => "/dev/mapper/jumper-jumper 13789092 13701780 0 100% /.o", r => 2 },
       
    57     {
       
    58         in =>
       
    59           "/dev/mapper/jumper-squid 1108684 247408 804956 24% /var/spool/squid",
       
    60         r => 0
       
    61     },
       
    62     {
       
    63         in => "/dev/mapper/jumper-log 2097152 32364 2064788 2% /var/log",
       
    64         r  => 0
       
    65     },
       
    66     { in => "tmpfs 131072 3568 127504 3% /tmp", r => 0 },
       
    67     {
       
    68         in => "/dev/mapper/jumper-src 10321208 888736 8908184 10% /usr/src",
       
    69         r  => 0
       
    70     },
       
    71     { in => "tmpfs 0 3568 127504 3% /tmp", r => 3 },
       
    72 );
    39 
    73 
       
    74 foreach (@data) {
       
    75 
       
    76     my $send   = $_->{in};
       
    77     my $expect = $_->{r};
       
    78     my $fs     = (split " " => $send)[-1];
       
    79 
       
    80     $test->run(args => $fs, stdin => "$head\n$send");
       
    81     my $rc = $? >> 8;
       
    82 
       
    83     subtest "filesystem $fs (expect $expect)" => sub {
       
    84 
       
    85         is($rc, $expect, "expected $expect")
       
    86           or diag length($test->stderr) ? "STDERR: " . $test->stderr
       
    87           : "" . length($test->stdout)  ? "STDOUT: " . $test->stdout
       
    88           :                               "";
       
    89 
       
    90         if    ($expect == 0) { like($test->stdout, qr/FS OK/,   "ok $fs") }
       
    91         elsif ($expect == 1) { like($test->stdout, qr/FS WARN/, "warn $fs") }
       
    92         elsif ($expect == 2) { like($test->stdout, qr/FS CRIT/, "crit $fs") }
       
    93         else                 { like($test->stdout, qr/FS UNKN/, "unknown $fs") }
       
    94     };
       
    95 }
    40 
    96 
    41 done_testing;
    97 done_testing;