cwd.t (was: Cwd has no tests?)
[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..14\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 # XXX these tests rely on a working pwd program or shell command
27 chomp(my $start = `pwd 2>/dev/null`);
28 if ($?) {
29     print "ok 3 # skipped\n";
30     print "ok 4 # skipped\n";
31     print "ok 5 # skipped\n";
32     print "ok 6 # skipped\n";
33 } else {
34     my $cwd        = cwd;
35     my $getcwd     = getcwd;
36     my $fastcwd    = fastcwd;
37     my $fastgetcwd = fastgetcwd;
38     print +($cwd        eq $start ? "" : "not "), "ok 3\n";
39     print +($getcwd     eq $start ? "" : "not "), "ok 4\n";
40     print +($fastcwd    eq $start ? "" : "not "), "ok 5\n";
41     print +($fastgetcwd eq $start ? "" : "not "), "ok 6\n";
42 }
43
44 mkdir "pteerslt", 0777;
45 mkdir "pteerslt/path", 0777;
46 mkdir "pteerslt/path/to", 0777;
47 mkdir "pteerslt/path/to/a", 0777;
48 mkdir "pteerslt/path/to/a/dir", 0777;
49 Cwd::chdir "pteerslt/path/to/a/dir";
50 my $cwd        = cwd;
51 my $getcwd     = getcwd;
52 my $fastcwd    = fastcwd;
53 my $fastgetcwd = fastgetcwd;
54 my $want = "t/pteerslt/path/to/a/dir";
55 print +($cwd        =~ m|$want$| ? "" : "not "), "ok 7\n";
56 print +($getcwd     =~ m|$want$| ? "" : "not "), "ok 8\n";
57 print +($fastcwd    =~ m|$want$| ? "" : "not "), "ok 9\n";
58 print +($fastgetcwd =~ m|$want$| ? "" : "not "), "ok 10\n";
59
60 # Cwd::chdir should also update $ENV{PWD}
61 print +($ENV{PWD} =~ m|$want$| ? "" : "not "), "ok 11\n";
62 Cwd::chdir ".."; rmdir "dir";
63 Cwd::chdir ".."; rmdir "a";
64 Cwd::chdir ".."; rmdir "to";
65 Cwd::chdir ".."; rmdir "path";
66 Cwd::chdir ".."; rmdir "pteerslt";
67 print +($ENV{PWD}  =~ m|\bt$| ? "" : "not "), "ok 12\n";
68
69 if ($Config{d_symlink}) {
70     my @dirs = split " " => $Config{libpth};
71     my $target = pop @dirs;
72     symlink $target => "linktest";
73     mkdir "pteerslt";
74     chdir "pteerslt";
75     my $rel = "../../t/linktest";
76
77     my $abs_path      = Cwd::abs_path($rel);
78     my $fast_abs_path = Cwd::fast_abs_path($rel);
79     print +($abs_path      eq $target ? "" : "not "), "ok 13\n";
80     print +($fast_abs_path eq $target ? "" : "not "), "ok 14\n";
81
82     chdir "..";
83     rmdir "pteerslt";
84     unlink "linktest";
85 } else {
86     print "ok 13 # skipped\n";
87     print "ok 14 # skipped\n";
88 }