t/00-basic.t
changeset 74 7d87261e4396
parent 73 112c0d86f3d4
equal deleted inserted replaced
73:112c0d86f3d4 74:7d87261e4396
     1 
       
     2 use 5.014;
       
     3 no strict 'subs';
       
     4 use Test::More;
       
     5 use Test::Exception;
       
     6 use English qw(-no_match_vars);
       
     7 
       
     8 package FOO;
       
     9 ::require_ok 'blib/nagios/plugins/ius/check_amanda-client';
       
    10 FOO->import;
       
    11 
       
    12 package main;
       
    13 
       
    14 subtest 'find_tool' => sub {
       
    15     is FOO::find_tool('sh'), '/bin/sh' => 'found /bin/sh';
       
    16     dies_ok { FOO: find_tool('abc123xyz-unknown-tool') }
       
    17     'dies for unknown tool';
       
    18 };
       
    19 
       
    20 subtest 'check_perms' => sub {
       
    21     my ($mode, $owner, $group) = (stat $EXECUTABLE_NAME)[2, 4, 5];
       
    22     $mode &= 07777;
       
    23 
       
    24     ok FOO::check_perms($EXECUTABLE_NAME, $mode, $owner, $group),
       
    25       "perms of $EXECUTABLE_NAME 1";
       
    26     ok FOO::check_perms(
       
    27         $EXECUTABLE_NAME, $mode,
       
    28         scalar(getpwuid $owner),
       
    29         scalar(getgrgid $group)
       
    30       ),
       
    31       "perms of $EXECUTABLE_NAME 2";
       
    32     dies_ok { FOO::check_perms($EXECUTABLE_NAME, $mode, $owner + 1, $group) }
       
    33     'dies on wrong perms';
       
    34 };
       
    35 
       
    36 subtest 'config_names' => sub {
       
    37     is_deeply [sort +FOO::config_names('t/etc/amanda')],
       
    38       [sort qw(foobar DailySet1 WeeklySet1)] => 'got configs';
       
    39     dies_ok { FOO::config_names('t/etc/no-amanda') } 'dies on missing configs';
       
    40 };
       
    41 
       
    42 subtest 'file systems' => sub {
       
    43     my @fs = do {
       
    44 	local @ARGV = ('/proc/filesystems');
       
    45 	map { /(\S+)/ } grep { not /^nodev/ } <>;
       
    46     };
       
    47     my @devs =
       
    48       sort { $a->[0] cmp $b->[0] }
       
    49       map { [$_->[0], (stat $_->[0])[0]] }
       
    50       grep { $_->[1] ~~ @fs }
       
    51       map { [(split)[6, 1]] } `df -PT`;
       
    52     ok scalar @fs => 'have file systems for testing';
       
    53     ok scalar @devs => 'have devices for testing';
       
    54     is_deeply [sort { $a->[0] cmp $b->[0] } FOO::get_devices()],
       
    55       \@devs => 'got the proper devices';
       
    56 
       
    57 };
       
    58 
       
    59 subtest 'su' => sub {
       
    60     is_deeply [FOO::su('root')], [0, 0], 'su to root';
       
    61 };
       
    62 
       
    63 done_testing;