|
Packit |
0bf95d |
#!/usr/bin/perl
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
$| = 1;
|
|
Packit |
0bf95d |
$^W = 1;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
use Test::More;
|
|
Packit |
0bf95d |
use File::Spec;
|
|
Packit |
0bf95d |
use File::Path;
|
|
Packit |
0bf95d |
use Archive::Zip;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use lib 't';
|
|
Packit |
0bf95d |
use common;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
sub get_perm {
|
|
Packit |
0bf95d |
my $filename = shift;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
return (((stat($filename))[2]) & 07777);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
sub test_if_chmod_is_working {
|
|
Packit |
0bf95d |
my $test_dir = File::Spec->rel2abs(File::Spec->catdir(TESTDIR, "chtest"));
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $test_file = File::Spec->catfile($test_dir, "test.file");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
mkdir($test_dir, 0755);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
open my $out, ">$test_file";
|
|
Packit |
0bf95d |
print {$out} "Foobar.";
|
|
Packit |
0bf95d |
close($out);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $test_perm = sub {
|
|
Packit |
0bf95d |
my $perm = shift;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
chmod($perm, $test_file);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
return (get_perm($test_file) == $perm);
|
|
Packit |
0bf95d |
};
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $verdict = $test_perm->(0444) && $test_perm->(0666);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Clean up
|
|
Packit |
0bf95d |
rmtree($test_dir);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
return $verdict;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
if (!test_if_chmod_is_working()) {
|
|
Packit |
0bf95d |
plan skip_all => "chmod() is not working on this machine.";
|
|
Packit |
0bf95d |
} else {
|
|
Packit |
0bf95d |
plan tests => 1;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $zip = Archive::Zip->new();
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$zip->read(File::Spec->catfile(File::Spec->curdir(), "t", "data", "chmod.zip"));
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $test_dir = File::Spec->catdir(File::Spec->curdir(), "testdir", "chtest");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
mkdir($test_dir, 0777);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $test_file = File::Spec->catfile($test_dir, "test_file");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$zip->memberNamed("test_dir/test_file")->extractToFileNamed($test_file);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# TEST
|
|
Packit |
0bf95d |
is(get_perm($test_file), 0444, "File permission is OK.");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Clean up.
|
|
Packit |
0bf95d |
rmtree($test_dir);
|
|
Packit |
0bf95d |
|