Dave Cross: Still Munging Data With Perl: Online event - Mar 27 Learn more

#!/usr/bin/perl
# 04-links.t
# Copyright (c) 2006 Jonathan Rockway <jrockway@cpan.org>
use strict;
plan skip_all => "links don't work under Win32" if $^O eq 'MSWin32';
plan tests => 14;
my $t = Directory::Scratch->new;
my $file1 = $t->touch('test', "this is a test");
my $dir = $t->mkdir('foo');
my $file2 = $t->touch('foo/test', "this is also a test");
ok($file1);
ok($dir);
ok($file2);
ok($t->link('test', 'new_test'));
ok($t->link('foo', 'new_foo'));
ok($t->link('foo/test', 'new_foo_test'));
ok($t->link('new_foo/test', 'newer_test'));
is($t->read('test'), "this is a test");
is($t->read('foo/test'), "this is also a test");
is($t->read('newer_test'), "this is also a test");
is($t->read('new_foo/test'), "this is also a test");
ok($t->touch('bar'));
eval {
$t->link('test', 'bar');
};
ok($@, 'cannot link over an existing file');
eval {
$t->link('test', 'test');
};
ok($@, 'cannot link over self');