1#!./perl 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6} 7 8BEGIN { 9 our @TEST = stat "TEST"; 10 our @README = stat "README"; 11 unless (@TEST && @README) { 12 print "1..0 # Skip: no file TEST or README\n"; 13 exit 0; 14 } 15} 16 17print "1..12\n"; 18 19use File::Compare qw(compare compare_text); 20 21print "ok 1\n"; 22 23# named files, same, existing but different, cause an error 24print "not " unless compare("README","README") == 0; 25print "ok 2\n"; 26 27print "not " unless compare("TEST","README") == 1; 28print "ok 3\n"; 29 30print "not " unless compare("README","HLAGHLAG") == -1; 31 # a file which doesn't exist 32print "ok 4\n"; 33 34# compare_text, the same file, different but existing files 35# cause error, test sub form. 36print "not " unless compare_text("README","README") == 0; 37print "ok 5\n"; 38 39print "not " unless compare_text("TEST","README") == 1; 40print "ok 6\n"; 41 42print "not " unless compare_text("TEST","HLAGHLAG") == -1; 43print "ok 7\n"; 44 45print "not " unless 46 compare_text("README","README",sub {$_[0] ne $_[1]}) == 0; 47print "ok 8\n"; 48 49# filehandle and same file 50{ 51 my $fh; 52 open ($fh, "<README") or print "not "; 53 binmode($fh); 54 print "not " unless compare($fh,"README") == 0; 55 print "ok 9\n"; 56 close $fh; 57} 58 59# filehandle and different (but existing) file. 60{ 61 my $fh; 62 open ($fh, "<README") or print "not "; 63 binmode($fh); 64 print "not " unless compare_text($fh,"TEST") == 1; 65 print "ok 10\n"; 66 close $fh; 67} 68 69# Different file with contents of known file, 70# will use File::Temp to do this, skip rest of 71# tests if this doesn't seem to work 72 73my @donetests; 74eval { 75 require File::Spec; import File::Spec; 76 require File::Path; import File::Path; 77 require File::Temp; import File::Temp qw/ :mktemp unlink0 /; 78 79 my $template = File::Spec->catfile(File::Spec->tmpdir, 'fcmpXXXX'); 80 my($tfh,$filename) = mkstemp($template); 81 { 82 local $/; #slurp 83 my $fh; 84 open($fh,'README'); 85 binmode($fh); 86 my $data = <$fh>; 87 print $tfh $data; 88 close($fh); 89 } 90 seek($tfh,0,0); 91 $donetests[0] = compare($tfh, 'README'); 92 $donetests[1] = compare($filename, 'README'); 93 unlink0($tfh,$filename); 94}; 95print "# problems when testing with a tempory file\n" if $@; 96 97if (@donetests == 2) { 98 print "not " unless $donetests[0] == 0; 99 print "ok 11\n"; 100 if ($^O eq 'VMS') { 101 # The open attempt on FROM in File::Compare::compare should fail 102 # on this OS since files are not shared by default. 103 print "not " unless $donetests[1] == -1; 104 print "ok 12\n"; 105 } 106 else { 107 print "not " unless $donetests[1] == 0; 108 print "ok 12\n"; 109 } 110} 111else { 112 print "ok 11# Skip\nok 12 # Skip Likely due to File::Temp\n"; 113} 114 115