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