cwd.t (was: Cwd has no tests?)
[p5sagit/p5-mst-13.2.git] / t / lib / cwd.t
CommitLineData
ed4a5f99 1#!./perl
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6}
7
8use Config;
9use Cwd;
10use strict;
11use warnings;
12
13print "1..14\n";
14
15# check imports
16print +(defined(&cwd) &&
17 defined(&getcwd) &&
18 defined(&fastcwd) &&
19 defined(&fastgetcwd) ?
20 "" : "not "), "ok 1\n";
21print +(!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
27chomp(my $start = `pwd 2>/dev/null`);
28if ($?) {
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
44mkdir "pteerslt", 0777;
45mkdir "pteerslt/path", 0777;
46mkdir "pteerslt/path/to", 0777;
47mkdir "pteerslt/path/to/a", 0777;
48mkdir "pteerslt/path/to/a/dir", 0777;
49Cwd::chdir "pteerslt/path/to/a/dir";
50my $cwd = cwd;
51my $getcwd = getcwd;
52my $fastcwd = fastcwd;
53my $fastgetcwd = fastgetcwd;
54my $want = "t/pteerslt/path/to/a/dir";
55print +($cwd =~ m|$want$| ? "" : "not "), "ok 7\n";
56print +($getcwd =~ m|$want$| ? "" : "not "), "ok 8\n";
57print +($fastcwd =~ m|$want$| ? "" : "not "), "ok 9\n";
58print +($fastgetcwd =~ m|$want$| ? "" : "not "), "ok 10\n";
59
60# Cwd::chdir should also update $ENV{PWD}
61print +($ENV{PWD} =~ m|$want$| ? "" : "not "), "ok 11\n";
62Cwd::chdir ".."; rmdir "dir";
63Cwd::chdir ".."; rmdir "a";
64Cwd::chdir ".."; rmdir "to";
65Cwd::chdir ".."; rmdir "path";
66Cwd::chdir ".."; rmdir "pteerslt";
67print +($ENV{PWD} =~ m|\bt$| ? "" : "not "), "ok 12\n";
68
69if ($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}