t/010-run.t
changeset 3 bdbd5e99f85a
parent 2 bc2f76c0908a
--- a/t/010-run.t	Fri Jan 20 09:13:33 2012 +0100
+++ b/t/010-run.t	Fri Jan 20 13:21:49 2012 +0100
@@ -4,7 +4,11 @@
 use Test::More;
 use Test::Cmd;
 
-my $test = Test::Cmd->new(prog => "blib/script/checkfs", workdir => "", verbose => $ENV{TEST_VERBOSE} > 1);
+my $test = Test::Cmd->new(
+    prog    => "blib/script/checkfs",
+    workdir => "",
+    verbose => $ENV{TEST_VERBOSE} > 1
+);
 ok($test, "test environment");
 
 # $ENV{HARNESS_ACTIVE}
@@ -26,7 +30,6 @@
     is($test->stderr, "", "stderr should be empty");
 };
 
-
 $test->run(args => "-m");
 $rc = $? >> 8;
 subtest "run w/ -m" => sub {
@@ -36,6 +39,59 @@
 };
 
 # create a fake df
+my $head =
+  "Filesystem         1024-blocks      Used Available Capacity Mounted on";
+my @data = (
+    { in => "/dev/mapper/jumper-root 7970992 6769920 801696 90% /", r => 2 },
+    { in => "tmpfs 1927372 12 1927360 1% /lib/init/rw",             r => 0 },
+    { in => "varrun 1927372 168 1927204 1% /var/run",               r => 0 },
+    { in => "varlock 1927372 0 1927372 0% /var/lock",               r => 0 },
+    { in => "udev 1921416 256 1921160 1% /dev",                     r => 0 },
+    { in => "tmpfs 1927372 40 1927332 1% /dev/shm",                 r => 0 },
+    {
+        in => "/dev/mapper/jumper-home 30963708 27663468 1727736 95% /home",
+        r  => 2
+    },
+    { in => "/dev/sda1 235021 35434 187453 16% /boot",                r => 0 },
+    { in => "/dev/mapper/jumper-jumper 13789092 13701780 0 100% /.o", r => 2 },
+    {
+        in =>
+          "/dev/mapper/jumper-squid 1108684 247408 804956 24% /var/spool/squid",
+        r => 0
+    },
+    {
+        in => "/dev/mapper/jumper-log 2097152 32364 2064788 2% /var/log",
+        r  => 0
+    },
+    { in => "tmpfs 131072 3568 127504 3% /tmp", r => 0 },
+    {
+        in => "/dev/mapper/jumper-src 10321208 888736 8908184 10% /usr/src",
+        r  => 0
+    },
+    { in => "tmpfs 0 3568 127504 3% /tmp", r => 3 },
+);
 
+foreach (@data) {
+
+    my $send   = $_->{in};
+    my $expect = $_->{r};
+    my $fs     = (split " " => $send)[-1];
+
+    $test->run(args => $fs, stdin => "$head\n$send");
+    my $rc = $? >> 8;
+
+    subtest "filesystem $fs (expect $expect)" => sub {
+
+        is($rc, $expect, "expected $expect")
+          or diag length($test->stderr) ? "STDERR: " . $test->stderr
+          : "" . length($test->stdout)  ? "STDOUT: " . $test->stdout
+          :                               "";
+
+        if    ($expect == 0) { like($test->stdout, qr/FS OK/,   "ok $fs") }
+        elsif ($expect == 1) { like($test->stdout, qr/FS WARN/, "warn $fs") }
+        elsif ($expect == 2) { like($test->stdout, qr/FS CRIT/, "crit $fs") }
+        else                 { like($test->stdout, qr/FS UNKN/, "unknown $fs") }
+    };
+}
 
 done_testing;