Can't trust external pwds
[p5sagit/p5-mst-13.2.git] / t / lib / cwd.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7
8 use Config;
9 use Cwd;
10 use strict;
11 use warnings;
12
13 print "1..10\n";
14
15 # check imports
16 print +(defined(&cwd) && 
17         defined(&getcwd) &&
18         defined(&fastcwd) &&
19         defined(&fastgetcwd) ?
20         "" : "not "), "ok 1\n";
21 print +(!defined(&chdir) &&
22         !defined(&abs_path) &&
23         !defined(&fast_abs_path) ?
24         "" : "not "), "ok 2\n";
25
26 mkdir "pteerslt", 0777;
27 mkdir "pteerslt/path", 0777;
28 mkdir "pteerslt/path/to", 0777;
29 mkdir "pteerslt/path/to/a", 0777;
30 mkdir "pteerslt/path/to/a/dir", 0777;
31 Cwd::chdir "pteerslt/path/to/a/dir";
32 my $cwd        = cwd;
33 my $getcwd     = getcwd;
34 my $fastcwd    = fastcwd;
35 my $fastgetcwd = fastgetcwd;
36 my $want = "t/pteerslt/path/to/a/dir";
37 print +($cwd        =~ m|$want$| ? "" : "not "), "ok 3\n";
38 print +($getcwd     =~ m|$want$| ? "" : "not "), "ok 4\n";
39 print +($fastcwd    =~ m|$want$| ? "" : "not "), "ok 5\n";
40 print +($fastgetcwd =~ m|$want$| ? "" : "not "), "ok 6\n";
41
42 # Cwd::chdir should also update $ENV{PWD}
43 print +($ENV{PWD} =~ m|$want$| ? "" : "not "), "ok 7\n";
44 Cwd::chdir ".."; rmdir "dir";
45 Cwd::chdir ".."; rmdir "a";
46 Cwd::chdir ".."; rmdir "to";
47 Cwd::chdir ".."; rmdir "path";
48 Cwd::chdir ".."; rmdir "pteerslt";
49 print +($ENV{PWD}  =~ m|\bt$| ? "" : "not "), "ok 8\n";
50
51 if ($Config{d_symlink}) {
52     my @dirs = split " " => $Config{libpth};
53     my $target = pop @dirs;
54     symlink $target => "linktest";
55     mkdir "pteerslt";
56     chdir "pteerslt";
57     my $rel = "../../t/linktest";
58
59     my $abs_path      = Cwd::abs_path($rel);
60     my $fast_abs_path = Cwd::fast_abs_path($rel);
61     print +($abs_path      eq $target ? "" : "not "), "ok 9\n";
62     print +($fast_abs_path eq $target ? "" : "not "), "ok 10\n";
63
64     chdir "..";
65     rmdir "pteerslt";
66     unlink "linktest";
67 } else {
68     print "ok 9 # Skip: no symlink\n";
69     print "ok 10 # Skip: no symlink\n";
70 }