[3228] | 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);
|
---|