File: var.t

package info (click to toggle)
libfile-chdir-perl 0.1008-1.2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 192 kB
  • sloc: perl: 482; makefile: 52
file content (56 lines) | stat: -rw-r--r-- 1,482 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/perl -w

use strict;
use Test::More tests => 13;
use File::Spec::Functions qw/canonpath catdir/;
use Cwd qw/getcwd/;

BEGIN { use_ok('File::chdir') }

# _catdir has OS-specific path separators so do the same for getcwd
sub _getcwd { canonpath( getcwd ) }

my $cwd = _getcwd;

ok( tied $CWD,      '$CWD is fit to be tied' );

# First, let's try unlocalized $CWD.
{
    $CWD = 't';
    ::is( _getcwd, catdir($cwd,'t'), 'unlocalized $CWD works' );
    ::is( $CWD,   catdir($cwd,'t'), '  $CWD set' );
}

::is( _getcwd, catdir($cwd,'t'), 'unlocalized $CWD unneffected by blocks' );
::is( $CWD,   catdir($cwd,'t'), '  and still set' );


# Ok, reset ourself for the real test.
$CWD = $cwd;

{
    my $old_dir = $CWD;
    local $CWD = "t";
    ::is( $old_dir, $cwd,           '$CWD fetch works' );
    ::is( _getcwd, catdir($cwd,'t'), 'localized $CWD works' );
}

::is( _getcwd, $cwd,                 '  and resets automatically!' );
::is( $CWD,   $cwd,                 '  $CWD reset, too' );


chdir('t');
is( $CWD,   catdir($cwd,'t'),       'chdir() and $CWD work together' );

#--------------------------------------------------------------------------#
# Exceptions
#--------------------------------------------------------------------------#
my $target = "doesnt_exist";
eval { $CWD = $target };
my $err = $@;
ok( $err, 'failure to chdir throws an error' );
like( $err,  "/Failed to change directory to '\Q$target\E'/", 
        '... and the error message is correct');