10 my $tmpfile = File::Temp->new;
12 ['REG', 'tmpfile', (stat "$tmpfile")[2]],
13 ['DIR', 'dir', (stat '.')[2]]
16 $devnull = File::Spec->devnull();
18 push @tests, ['CHR', $devnull, (stat $devnull)[2]];
21 plan(tests => 34 + 6 + 9 * @tests);
23 my ($type, $name, $mode) = @$_;
26 ok( S_ISREG($mode), " S_ISREG $name");
28 ok(!S_ISREG($mode), "!S_ISREG $name");
32 ok( S_ISDIR($mode), " S_ISDIR $name");
34 ok(!S_ISDIR($mode), "!S_ISDIR $name");
38 skip 'No S_IFCHR', 1 unless defined eval {S_IFCHR};
40 ok( S_ISCHR($mode), " S_ISCHR $name");
42 ok(!S_ISCHR($mode), "!S_ISCHR $name");
47 skip 'No S_IFLNK', 1 unless defined eval {S_IFLNK};
48 ok(!S_ISLNK($mode), "!S_ISLNK $name");
51 skip 'No S_IFSOCK', 1 unless defined eval {S_IFSOCK};
52 ok(!S_ISSOCK($mode), "!S_ISSOCK $name");
55 skip 'No S_IFBLK', 1 unless defined eval {S_IFBLK};
56 ok(!S_ISBLK($mode), "!S_ISBLK $name");
59 skip 'No S_IFFIFO', 1 unless defined eval {S_IFFIFO};
60 ok(!S_ISFIFO($mode), "!S_ISFIFO $name");
63 skip 'No S_IFWHT', 1 unless defined eval {S_IFWHT};
64 ok(!S_ISWHT($mode), "!S_ISWHT $name");
67 skip 'No S_ENFMT', 1 unless defined eval {S_ENFMT};
68 ok(!S_ISENFMT($mode), "!S_ISENFMT $name");
72 foreach ([S_ISREG => \&S_ISREG],
73 [S_IMODE => \&S_IMODE],
75 my ($name, $func) = @$_;
80 local $SIG{__WARN__} = sub { push @warnings, "@_" };
83 ok(!$ret, "$name() is false");
84 is(scalar @warnings, 1, '1 warning');
85 like($warnings[0], qr/^Use of uninitialized value/, 'expected warning');
88 is (S_IFMT(), _S_IFMT(), 'S_IFMT()');
89 is (S_IFMT(0), 0, 'S_IFMT(0)');
90 for my $shift (0..31) {
91 is (S_IFMT(1 << $shift), ((1 << $shift) & _S_IFMT()), "S_IFMT(1 << $shift)");