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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#!/usr/bin/perl
use warnings;
use strict;
use Test::More no_plan =>;
use File::Fu;
my $tempdir = File::Fu->temp_dir; $tempdir->chdir;
my $this = File::Fu->dir('this')->mkdir;
# simply creating a link
{
my $link = $this->symlink('foo');
ok($link);
ok($link->l);
ok($link->e);
$link->unlink;
ok(! $link->e, 'gone');
ok($this->e);
}
# links don't have to point to existing directories
{
my $none = File::Fu->dir('bah');
my $link = $none->symlink('deal');
isa_ok($link, 'File::Fu::Dir');
ok($link->l);
ok(! $link->e, 'nothing there');
$link->unlink;
ok(! $link->l);
}
# make sure we can pass inputs a few ways
{
my $dir = File::Fu->dir("dir")->mkdir;
my $link = File::Fu->dir("what")->symlink($dir / 'link');
ok(! $link->e);
ok($link->l, 'is a link');
$link->unlink;
$link = File::Fu->dir("what")->symlink('dir/link');
ok($link->l, 'is a link');
$link->unlink;
$link = File::Fu->dir("what")->symlink('dir/link/');
ok($link->l, 'is a link');
$link->unlink;
$dir->rmdir;
}
# relative
{
my $dir = File::Fu->dir("dir")->mkdir;
my $link = $this->relative_symlink($dir / 'whee');
ok($link->l);
ok($link->e);
ok($link->d);
my $lfile = $link + 'file';
$lfile->touch;
my $file = $this + 'file';
ok($file->e, 'exists');
$file->unlink;
ok(! $lfile->e, 'gone');
$link->unlink;
$dir->rmdir;
}
# relative where there is no depth involved
{
my $link = $this->relative_symlink('whee');
ok($link->e);
ok($link->l);
ok($link->d);
my $lfile = $link + 'file';
$lfile->touch;
my $file = $this + 'file';
ok($file->e, 'exists');
$file->unlink;
ok(! $lfile->e, 'gone');
$link->unlink;
}
$this->rmdir;
# vim:ts=2:sw=2:et:sta
|