diff options
Diffstat (limited to 'ext/Cwd')
-rw-r--r-- | ext/Cwd/Changes | 6 | ||||
-rw-r--r-- | ext/Cwd/t/cwd.t | 29 |
2 files changed, 28 insertions, 7 deletions
diff --git a/ext/Cwd/Changes b/ext/Cwd/Changes index c3158baeac..ca9684e367 100644 --- a/ext/Cwd/Changes +++ b/ext/Cwd/Changes @@ -1,5 +1,11 @@ Revision history for Perl extension Cwd. +2.17 Wed Mar 10 07:55:36 CST 2004 + + - The change in 2.16 created a testing failure when tested from + within a path that contains symlinks (for instance, /tmp -> + /private/tmp). + 2.16 Sat Mar 6 17:56:31 CST 2004 - For VMS compatibility (and to conform to Cwd's documented diff --git a/ext/Cwd/t/cwd.t b/ext/Cwd/t/cwd.t index fbd8133cd9..c2142e99f4 100644 --- a/ext/Cwd/t/cwd.t +++ b/ext/Cwd/t/cwd.t @@ -89,9 +89,8 @@ SKIP: { } } -my $Top_Test_Dir = '_ptrslt_'; -my $Test_Dir = File::Spec->catdir($Top_Test_Dir, qw/_path_ _to_ _a_ _dir_/); -my $want = quotemeta File::Spec->rel2abs($Test_Dir); +my @test_dirs = qw{_ptrslt_ _path_ _to_ _a_ _dir_}; +my $Test_Dir = File::Spec->catdir(@test_dirs); mkpath([$Test_Dir], 0, 0777); Cwd::chdir $Test_Dir; @@ -99,11 +98,11 @@ Cwd::chdir $Test_Dir; foreach my $func (qw(cwd getcwd fastcwd fastgetcwd)) { my $result = eval "$func()"; is $@, ''; - like( File::Spec->canonpath($result), qr|$want$|i, "$func()" ); + dir_ends_with( $result, $Test_Dir, "$func()" ); } # Cwd::chdir should also update $ENV{PWD} -like(File::Spec->canonpath($ENV{PWD}), qr|$want$|i, 'Cwd::chdir() updates $ENV{PWD}'); +dir_ends_with( $ENV{PWD}, $Test_Dir, 'Cwd::chdir() updates $ENV{PWD}' ); my $updir = File::Spec->updir; Cwd::chdir $updir; print "#$ENV{PWD}\n"; @@ -116,7 +115,7 @@ print "#$ENV{PWD}\n"; Cwd::chdir $updir; print "#$ENV{PWD}\n"; -rmtree([$Top_Test_Dir], 0, 0); +rmtree($test_dirs[0], 0, 0); { my $check = ($IsVMS ? qr|\b((?i)t)\]$| : @@ -139,6 +138,22 @@ SKIP: { like($abs_path, qr|$want$|); like($fast_abs_path, qr|$want$|); - rmtree([$Top_Test_Dir], 0, 0); + rmtree($test_dirs[0], 0, 0); unlink "linktest"; } + +############################################# +# These two routines give us sort of a poor-man's cross-platform +# directory comparison routine. + +sub bracketed_form { + return join '', map "[$_]", + grep length, File::Spec->splitdir(File::Spec->canonpath( shift() )); +} + +sub dir_ends_with { + my ($dir, $expect) = (shift, shift); + my $bracketed_expect = quotemeta bracketed_form($expect); + like( bracketed_form($dir), qr|$bracketed_expect$|i, (@_ ? shift : ()) ); +} + |