Commit | Line | Data |
a080fe3d |
1 | #!./perl |
2 | |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = '../lib'; |
6 | } |
7 | |
8 | BEGIN { |
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 | |
d5693696 |
17 | print "1..13\n"; |
a080fe3d |
18 | |
19 | use File::Compare qw(compare compare_text); |
20 | |
21 | print "ok 1\n"; |
22 | |
23 | # named files, same, existing but different, cause an error |
24 | print "not " unless compare("README","README") == 0; |
25 | print "ok 2\n"; |
26 | |
27 | print "not " unless compare("TEST","README") == 1; |
28 | print "ok 3\n"; |
29 | |
30 | print "not " unless compare("README","HLAGHLAG") == -1; |
31 | # a file which doesn't exist |
32 | print "ok 4\n"; |
33 | |
34 | # compare_text, the same file, different but existing files |
35 | # cause error, test sub form. |
36 | print "not " unless compare_text("README","README") == 0; |
37 | print "ok 5\n"; |
38 | |
39 | print "not " unless compare_text("TEST","README") == 1; |
40 | print "ok 6\n"; |
41 | |
42 | print "not " unless compare_text("TEST","HLAGHLAG") == -1; |
43 | print "ok 7\n"; |
44 | |
45 | print "not " unless |
46 | compare_text("README","README",sub {$_[0] ne $_[1]}) == 0; |
47 | print "ok 8\n"; |
48 | |
49 | # filehandle and same file |
50 | { |
51 | my $fh; |
52 | open ($fh, "<README") or print "not "; |
e5a04bd3 |
53 | binmode($fh); |
a080fe3d |
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 "; |
e5a04bd3 |
63 | binmode($fh); |
a080fe3d |
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 | |
73 | my @donetests; |
74 | eval { |
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); |
23c26668 |
81 | # NB. The trailing space is intentional (see [perl #37716]) |
8974ce1e |
82 | open my $tfhSP, ">", "$filename " |
83 | or die "Could not open '$filename ' for writing: $!"; |
84 | binmode($tfhSP); |
a080fe3d |
85 | { |
86 | local $/; #slurp |
87 | my $fh; |
88 | open($fh,'README'); |
e5a04bd3 |
89 | binmode($fh); |
a080fe3d |
90 | my $data = <$fh>; |
91 | print $tfh $data; |
92 | close($fh); |
8974ce1e |
93 | print $tfhSP $data; |
94 | close($tfhSP); |
a080fe3d |
95 | } |
96 | seek($tfh,0,0); |
c96098b8 |
97 | $donetests[0] = compare($tfh, 'README'); |
98 | $donetests[1] = compare($filename, 'README'); |
a080fe3d |
99 | unlink0($tfh,$filename); |
23c26668 |
100 | $donetests[2] = compare('README', "$filename "); |
101 | unlink "$filename "; |
a080fe3d |
102 | }; |
d5693696 |
103 | print "# problem '$@' when testing with a temporary file\n" if $@; |
a080fe3d |
104 | |
d5693696 |
105 | if (@donetests == 3) { |
a080fe3d |
106 | print "not " unless $donetests[0] == 0; |
d5693696 |
107 | print "ok 11 # fh/file [$donetests[0]]\n"; |
584e6f13 |
108 | if ($^O eq 'VMS') { |
109 | # The open attempt on FROM in File::Compare::compare should fail |
110 | # on this OS since files are not shared by default. |
111 | print "not " unless $donetests[1] == -1; |
d5693696 |
112 | print "ok 12 # file/file [$donetests[1]]\n"; |
584e6f13 |
113 | } |
114 | else { |
115 | print "not " unless $donetests[1] == 0; |
d5693696 |
116 | print "ok 12 # file/file [$donetests[1]]\n"; |
584e6f13 |
117 | } |
d5693696 |
118 | print "not " unless $donetests[2] == 0; |
119 | print "ok 13 # file/fileCR [$donetests[2]]\n"; |
a080fe3d |
120 | } |
121 | else { |
d5693696 |
122 | print "ok 11# Skip\nok 12 # Skip\nok 13 # Skip Likely due to File::Temp\n"; |
a080fe3d |
123 | } |
124 | |