[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(
|
---|
| 9 | CLEANUP => 1
|
---|
| 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 | my $libc;
|
---|
| 26 | foreach my $f (<"/lib/libc.so.[0-9]*">) {
|
---|
| 27 | copy "$f","usr/lib" || die "$!";
|
---|
| 28 | $libc = $f;
|
---|
| 29 | }
|
---|
| 30 |
|
---|
| 31 | # Create links on files
|
---|
| 32 | chdir "$bd/usr/bin" || die "$!";
|
---|
| 33 | symlink "perl","toto" || die "$!"; # in same dir
|
---|
| 34 | chdir "$bd/var/spool/" || die "$!";
|
---|
| 35 | symlink "../../usr/bin/perl","toto" || die "$!"; # in another dir relatively
|
---|
| 36 | chdir "$bd/var" || die "$!";
|
---|
| 37 | symlink "$bd/usr/bin/perl","truc" || die "$!"; # in another dir absolutely
|
---|
| 38 |
|
---|
| 39 | # Create links on dirs
|
---|
| 40 | chdir "$bd/var/spool" || die "$!";
|
---|
| 41 | symlink "mail","titi" || die "$!"; # in same dir
|
---|
| 42 | chdir "$bd/var/lib" || die "$!";
|
---|
| 43 | symlink "../spool/mail","titi" || die "$!"; # in another dir relatively
|
---|
| 44 | chdir "$bd/var" || die "$!";
|
---|
| 45 | symlink "$bd/var/spool/mail","tutu" || die "$!"; # in another dir absolutely
|
---|
| 46 |
|
---|
| 47 | print "Temporary dir: $bd\n";
|
---|
| 48 |
|
---|
| 49 | # Now try to see if we get the right links
|
---|
| 50 | my $h = mr_file_read_all_link(
|
---|
| 51 | "$bd/usr/bin/toto",
|
---|
| 52 | "$bd/var/spool/toto",
|
---|
| 53 | "$bd/var/truc",
|
---|
| 54 | "$bd/var/spool/titi",
|
---|
| 55 | "$bd/var/lib/titi",
|
---|
| 56 | "$bd/var/tutu"
|
---|
| 57 | );
|
---|
| 58 |
|
---|
[3243] | 59 | my $more = 1;
|
---|
| 60 |
|
---|
| 61 | eval
|
---|
| 62 | {
|
---|
| 63 | require Test::More;
|
---|
| 64 | Test::More->import();
|
---|
| 65 | no_plan();
|
---|
| 66 | };
|
---|
| 67 | # Test::More not found so simpler test
|
---|
| 68 | if ($@) {
|
---|
| 69 | require Test;
|
---|
| 70 | Test->import();
|
---|
| 71 | $more = 0;
|
---|
| 72 | plan(tests => 12);
|
---|
| 73 | }
|
---|
[3228] | 74 | # Got, expected, comment
|
---|
[3262] | 75 | myis($h->{"$bd/usr/bin/toto"}->{"$bd/usr/bin/toto"}, 1, "File link in same dir to itself");
|
---|
| 76 | myis($h->{"$bd/usr/bin/toto"}->{"$bd/usr/bin/perl"}, 1, "File link in same dir to link");
|
---|
| 77 | myis($h->{"$bd/var/truc"}->{"$bd/var/truc"}, 1, "File link in another absolute dir to itself");
|
---|
| 78 | myis($h->{"$bd/var/truc"}->{"$bd/usr/bin/perl"}, 1, "File link in another absolute dir to link");
|
---|
| 79 | myis($h->{"$bd/var/spool/toto"}->{"$bd/var/spool/toto"}, 1, "File link in another relative dir to itself");
|
---|
| 80 | myis($h->{"$bd/var/spool/toto"}->{"$bd/usr/bin/perl"}, 1, "File link in another relative dir to link");
|
---|
| 81 | myis($h->{"$bd/var/spool/titi"}->{"$bd/var/spool/titi"}, 1, "Directory link in same dir to itself");
|
---|
| 82 | myis($h->{"$bd/var/spool/titi"}->{"$bd/var/spool/mail"}, 1, "Directory link in same dir to link");
|
---|
| 83 | myis($h->{"$bd/var/lib/titi"}->{"$bd/var/lib/titi"}, 1, "Directory link in another relative dir to itself");
|
---|
| 84 | myis($h->{"$bd/var/lib/titi"}->{"$bd/var/spool/mail"}, 1, "Directory link in another relative dir to link");
|
---|
| 85 | myis($h->{"$bd/var/tutu"}->{"$bd/var/tutu"}, 1, "Directory link in another absolute dir to itself");
|
---|
| 86 | myis($h->{"$bd/var/tutu"}->{"$bd/var/spool/mail"}, 1, "Directory link in another absolute dir to link");
|
---|
[3228] | 87 | chdir "/tmp";
|
---|
| 88 | exit(0);
|
---|
[3243] | 89 |
|
---|
| 90 | sub myis {
|
---|
| 91 |
|
---|
| 92 | if ($more eq 1) {
|
---|
| 93 | return(is(@_));
|
---|
| 94 | } else {
|
---|
| 95 | my $p1 = shift;
|
---|
| 96 | my $p2 = shift;
|
---|
| 97 | my $p3 = shift;
|
---|
| 98 | print "# test $p3\n";
|
---|
| 99 | return(ok($p1,$p2));
|
---|
| 100 | }
|
---|
| 101 | }
|
---|
| 102 |
|
---|