1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!./perl
BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
}
use Config;
use Cwd;
use strict;
use warnings;
print "1..14\n";
# check imports
print +(defined(&cwd) &&
defined(&getcwd) &&
defined(&fastcwd) &&
defined(&fastgetcwd) ?
"" : "not "), "ok 1\n";
print +(!defined(&chdir) &&
!defined(&abs_path) &&
!defined(&fast_abs_path) ?
"" : "not "), "ok 2\n";
# Must find an external pwd (or equivalent) command.
my $pwd_cmd =
($^O eq "MSWin32") ? "cd" : (grep { -x && -f } map { "$_/pwd" }
split m/$Config{path_sep}/, $ENV{PATH})[0];
if (defined $pwd_cmd) {
chomp(my $start = `$pwd_cmd`);
# Win32's cd returns native C:\ style
$start =~ s,\\,/,g if $^O eq 'MSWin32';
if ($?) {
for (3..6) {
print "ok $_ # Skip: '$pwd_cmd' failed\n";
}
} else {
my $cwd = cwd;
my $getcwd = getcwd;
my $fastcwd = fastcwd;
my $fastgetcwd = fastgetcwd;
print +($cwd eq $start ? "" : "not "), "ok 3\n";
print +($getcwd eq $start ? "" : "not "), "ok 4\n";
print +($fastcwd eq $start ? "" : "not "), "ok 5\n";
print +($fastgetcwd eq $start ? "" : "not "), "ok 6\n";
}
} else {
for (3..6) {
print "ok $_ # Skip: no pwd command found\n";
}
}
mkdir "pteerslt", 0777;
mkdir "pteerslt/path", 0777;
mkdir "pteerslt/path/to", 0777;
mkdir "pteerslt/path/to/a", 0777;
mkdir "pteerslt/path/to/a/dir", 0777;
Cwd::chdir "pteerslt/path/to/a/dir";
my $cwd = cwd;
my $getcwd = getcwd;
my $fastcwd = fastcwd;
my $fastgetcwd = fastgetcwd;
my $want = "t/pteerslt/path/to/a/dir";
print +($cwd =~ m|$want$| ? "" : "not "), "ok 7\n";
print +($getcwd =~ m|$want$| ? "" : "not "), "ok 8\n";
print +($fastcwd =~ m|$want$| ? "" : "not "), "ok 9\n";
print +($fastgetcwd =~ m|$want$| ? "" : "not "), "ok 10\n";
# Cwd::chdir should also update $ENV{PWD}
print "#$ENV{PWD}\n";
print +($ENV{PWD} =~ m|$want$| ? "" : "not "), "ok 11\n";
Cwd::chdir ".."; rmdir "dir";
print "#$ENV{PWD}\n";
Cwd::chdir ".."; rmdir "a";
print "#$ENV{PWD}\n";
Cwd::chdir ".."; rmdir "to";
print "#$ENV{PWD}\n";
Cwd::chdir ".."; rmdir "path";
print "#$ENV{PWD}\n";
Cwd::chdir ".."; rmdir "pteerslt";
print "#$ENV{PWD}\n";
print +($ENV{PWD} =~ m|\bt$| ? "" : "not "), "ok 12\n";
if ($Config{d_symlink}) {
my @dirs = split " " => $Config{libpth};
my $target = pop @dirs;
symlink $target => "linktest";
mkdir "pteerslt";
chdir "pteerslt";
my $rel = "../../t/linktest";
my $abs_path = Cwd::abs_path($rel);
my $fast_abs_path = Cwd::fast_abs_path($rel);
print +($abs_path eq $target ? "" : "not "), "ok 13\n";
print +($fast_abs_path eq $target ? "" : "not "), "ok 14\n";
chdir "..";
rmdir "pteerslt";
unlink "linktest";
} else {
print "ok 13 # skipped\n";
print "ok 14 # skipped\n";
}
|