1 | #!/usr/bin/perl -w
|
---|
2 | use Test::More 'no_plan';
|
---|
3 | use File::Temp qw/ tempdir /;
|
---|
4 | use File::Copy;
|
---|
5 | use MondoRescue::File;
|
---|
6 | use strict;
|
---|
7 |
|
---|
8 | # Create the structure for the tests
|
---|
9 | my $bd = tempdir(
|
---|
10 | CLEANUP => 1
|
---|
11 | );
|
---|
12 |
|
---|
13 | # Create directory structure
|
---|
14 | chdir $bd || die "Unable to chdir to $bd";
|
---|
15 | mkdir "usr",0755 || die "$!";
|
---|
16 | mkdir "usr/bin",0755 || die "$!";
|
---|
17 | mkdir "usr/lib",0755 || die "$!";
|
---|
18 | mkdir "var",0755 || die "$!";
|
---|
19 | mkdir "var/spool",0755 || die "$!";
|
---|
20 | mkdir "var/spool/mail",0755 || die "$!";
|
---|
21 | mkdir "var/lib",0755 || die "$!";
|
---|
22 |
|
---|
23 | # Copy some files in it
|
---|
24 | copy "/usr/bin/perl","usr/bin" || die "$!";
|
---|
25 | chmod 0755,"usr/bin/perl";
|
---|
26 | my $libc;
|
---|
27 | foreach my $f (<"/lib/libc.so.[0-9]*">) {
|
---|
28 | copy "$f","usr/lib" || die "$!";
|
---|
29 | $libc = $f;
|
---|
30 | }
|
---|
31 |
|
---|
32 | # Create links on files
|
---|
33 | chdir "$bd/usr/bin" || die "$!";
|
---|
34 | symlink "perl","toto" || die "$!"; # in same dir
|
---|
35 | chdir "$bd/var/spool/" || die "$!";
|
---|
36 | symlink "../../usr/bin/perl","toto" || die "$!"; # in another dir relatively
|
---|
37 | chdir "$bd/var" || die "$!";
|
---|
38 | symlink "$bd/usr/bin/perl","truc" || die "$!"; # in another dir absolutely
|
---|
39 |
|
---|
40 | # Create links on dirs
|
---|
41 | chdir "$bd/var/spool" || die "$!";
|
---|
42 | symlink "mail","titi" || die "$!"; # in same dir
|
---|
43 | chdir "$bd/var/lib" || die "$!";
|
---|
44 | symlink "../spool/mail","titi" || die "$!"; # in another dir relatively
|
---|
45 | chdir "$bd/var" || die "$!";
|
---|
46 | symlink "$bd/var/spool/mail","tutu" || die "$!"; # in another dir absolutely
|
---|
47 |
|
---|
48 | print "Temporary dir: $bd\n";
|
---|
49 |
|
---|
50 | # Now try to see if we get the right links
|
---|
51 | my $h = mr_file_read_all_link(
|
---|
52 | "$bd/usr/bin/toto",
|
---|
53 | "$bd/var/spool/toto",
|
---|
54 | "$bd/var/truc",
|
---|
55 | "$bd/var/spool/titi",
|
---|
56 | "$bd/var/lib/titi",
|
---|
57 | "$bd/var/tutu"
|
---|
58 | );
|
---|
59 |
|
---|
60 | # Got, expected, comment
|
---|
61 | is(@{$h->{"$bd/usr/bin/toto"}}[0], "$bd/usr/bin/toto", "File link in same dir to itself");
|
---|
62 | is(@{$h->{"$bd/usr/bin/toto"}}[1], "$bd/usr/bin/perl", "File link in same dir to link");
|
---|
63 | is(@{$h->{"$bd/var/truc"}}[0], "$bd/var/truc", "File link in another absolute dir to itself");
|
---|
64 | is(@{$h->{"$bd/var/truc"}}[1], "$bd/usr/bin/perl", "File link in another absolute dir to link");
|
---|
65 | is(@{$h->{"$bd/var/spool/toto"}}[0], "$bd/var/spool/toto", "File link in another relative dir to itself");
|
---|
66 | is(@{$h->{"$bd/var/spool/toto"}}[1], "$bd/usr/bin/perl", "File link in another relative dir to link");
|
---|
67 | is(@{$h->{"$bd/var/spool/titi"}}[0], "$bd/var/spool/titi", "Directory link in same dir to itself");
|
---|
68 | is(@{$h->{"$bd/var/spool/titi"}}[1], "$bd/var/spool/mail", "Directory link in same dir to link");
|
---|
69 | is(@{$h->{"$bd/var/lib/titi"}}[0], "$bd/var/lib/titi", "Directory link in another relative dir to itself");
|
---|
70 | is(@{$h->{"$bd/var/lib/titi"}}[1], "$bd/var/spool/mail", "Directory link in another relative dir to link");
|
---|
71 | is(@{$h->{"$bd/var/tutu"}}[0], "$bd/var/tutu", "Directory link in another absolute dir to itself");
|
---|
72 | is(@{$h->{"$bd/var/tutu"}}[1], "$bd/var/spool/mail", "Directory link in another absolute dir to link");
|
---|
73 | chdir "/tmp";
|
---|
74 | exit(0);
|
---|