Filesys-POSIX
view release on metacpan or search on metacpan
my $fd = $fs->open( "$_/emptyfile", $O_CREAT );
ok( !$@, "Filesys::POSIX->statfs('$_/') returns mount information" );
ok(
$mount->{'dev'} eq $expected,
"Mount object for $_ lists expected device"
);
ok(
$fs->fstatfs($fd) eq $mount,
"Filesys::POSIX->fstatfs() on open file descriptor returns expected mount object"
);
$fs->close($fd);
}
{
my $found = 0;
foreach my $mount ( $fs->mountlist ) {
$found++ if $mounts->{ $mount->{'path'} };
}
ok(
$found == keys %$mounts,
"Filesys::POSIX->mountlist() works expectedly"
);
}
{
$fs->chdir('/mnt/mem/tmp');
ok(
$fs->getcwd eq '/mnt/mem/tmp',
"Filesys::POSIX->getcwd() reports /mnt/mem/tmp after a chdir()"
);
$fs->chdir('..');
ok(
$fs->getcwd eq '/mnt/mem',
"Filesys::POSIX->getcwd() reports /mnt/mem after a chdir('..')"
);
$fs->chdir('..');
ok(
$fs->getcwd eq '/mnt',
"Filesys::POSIX->getcwd() reports /mnt after a chdir('..')"
);
$fs->chdir('..');
ok(
$fs->getcwd eq '/',
"Filesys::POSIX->getcwd() reports / after a chdir('..')"
);
}
{
my $fd = $fs->open( '/mnt/mem/test.txt', $O_CREAT );
throws_errno_ok {
$fs->unmount('/mnt/mem');
}
&Errno::EBUSY, "Filesys::POSIX->unmount() prevents unmounting busy filesystem /mnt/mem";
$fs->close($fd);
$fd = $fs->open( '/foo.txt', $O_CREAT );
throws_errno_ok {
$fs->unmount('/mnt/mem');
}
&Errno::EBUSY, "Filesys::POSIX->unmount() prevents unmounting busy filesystem /mnt/mem";
throws_errno_ok {
$fs->chdir('/mnt/mem');
$fs->unmount('/mnt/mem');
}
&Errno::EBUSY, "Filesys::POSIX->unmount() fails when cwd is /mnt/mem";
$fs->chdir('/');
$fs->close($fd);
}
{
$fs->mkdir("real");
$fs->mkdir("real/0");
my $inode = eval { $fs->stat('real/0') };
ok($inode, 'Mkdir of real/0 succeeded');
diag($@) if $@;
$fs->mount( Filesys::POSIX::Real->new, 'real/0', path => '/' );
$inode = eval { $fs->stat('real/0/etc/passwd') };
ok( $inode, 'Mount at real/0 functions properly' );
diag($@) if $@;
$fs->unmount('real/0');
}
{
$fs->unmount('/mnt/mem/tmp');
$fs->unmount('/mnt/mem');
throws_errno_ok {
$fs->stat('/mnt/mem/tmp');
}
&Errno::ENOENT, "/mnt/mem/tmp can no longer be accessed after unmounting /mnt/mem";
}
( run in 0.673 second using v1.01-cache-2.11-cpan-39bf76dae61 )