3 # Test the private _can_write_dir() function.
8 { package FS; our @ISA = qw(File::Spec); }
10 # Alias it for easier access
11 *can_write_dir = \&ExtUtils::Install::_can_write_dir;
13 use Test::More 'no_plan';
16 my $dne = FS->catdir(qw(does not exist));
18 is_deeply [can_write_dir($dne)],
22 FS->catdir('does', 'not'),
23 FS->catdir('does', 'not', 'exist')
27 my $abs_dne = FS->rel2abs($dne);
29 is_deeply [can_write_dir($abs_dne)],
31 FS->rel2abs(FS->curdir),
32 FS->rel2abs(FS->catdir('does')),
33 FS->rel2abs(FS->catdir('does', 'not')),
34 FS->rel2abs(FS->catdir('does', 'not', 'exist')),
38 my $exists = FS->catdir(qw(exists));
39 my $subdir = FS->catdir(qw(exists subdir));
45 ok chmod 0555, $exists, 'make read only';
47 skip "Current user or OS cannot create directories that they cannot read", 6
48 if -w $exists; # these tests require a directory we cant read
50 is_deeply [can_write_dir($exists)], [0, $exists];
51 is_deeply [can_write_dir($subdir)], [0, $exists, $subdir];
53 ok chmod 0777, $exists, 'make writable';
55 is_deeply [can_write_dir($exists)], [1, $exists];
56 is_deeply [can_write_dir($subdir)],