Forgot the unneeded hints/dec_osf.pl into MANIFEST in #9308.
[p5sagit/p5-mst-13.2.git] / t / lib / md5-file.t
CommitLineData
3357b1b1 1BEGIN {
2 chdir 't' if -d 't';
3 @INC = '../lib';
4}
5
6print "1..2\n";
7
8use strict;
9use Digest::MD5 qw(md5 md5_hex);
10
11#
12# This is the output of: 'md5sum MD5.pm MD5.xs'
13#
fed3f325 14my $EXPECT;
15
16if (ord('A' == 193) { # EBCDIC
17$EXPECT = <<EOT;
3357b1b1 189e1d1183ff41717c91a563c41e08d672 ext/Digest/MD5/MD5.pm
1961debd0ec12e131e1ba220e2f3ad2d26 ext/Digest/MD5/MD5.xs
20EOT
fed3f325 21} else { # ASCII
22$EXPECT = <<EOT;
239e1d1183ff41717c91a563c41e08d672 ext/Digest/MD5/MD5.pm
2461debd0ec12e131e1ba220e2f3ad2d26 ext/Digest/MD5/MD5.xs
25EOT
26}
3357b1b1 27my $testno = 0;
28
29use File::Spec;
30
31for (split /^/, $EXPECT) {
32 my($md5hex, $file) = split ' ';
33 my @path = split(m:/:, $file);
34 my $last = pop @path;
35 my $path = File::Spec->updir;
36 while (@path) {
37 $path = File::Spec->catdir($path, shift @path);
38 }
39 $file = File::Spec->catfile($path, $last);
40 my $md5bin = pack("H*", $md5hex);
41 my $failed;
42
43 if (digest_file($file, 'digest') ne $md5bin) {
44 print "$file: Bad digest\n";
45 $failed++;
46 }
47
48 if (digest_file($file, 'hexdigest') ne $md5hex) {
49 print "$file: Bad hexdigest\n";
50 $failed++;
51 }
52
53 my $data = cat_file($file);
54 if (md5($data) ne $md5bin) {
55 print "$file: md5() failed\n";
56 $failed++;
57 }
58 if (md5_hex($data) ne $md5hex) {
59 print "$file: md5_hex() failed\n";
60 $failed++;
61 }
62
63 if (Digest::MD5->new->add($data)->digest ne $md5bin) {
64 print "$file: MD5->new->add(...)->digest failed\n";
65 $failed++;
66 }
67 if (Digest::MD5->new->add($data)->hexdigest ne $md5hex) {
68 print "$file: MD5->new->add(...)->hexdigest failed\n";
69 $failed++;
70 }
71
72 my @data = split //, $data;
73 if (md5(@data) ne $md5bin) {
74 print "$file: md5(\@data) failed\n";
75 $failed++;
76 }
77 if (Digest::MD5->new->add(@data)->digest ne $md5bin) {
78 print "$file: MD5->new->add(\@data)->digest failed\n";
79 $failed++;
80 }
81 my $md5 = Digest::MD5->new;
82 for (@data) {
83 $md5->add($_);
84 }
85 if ($md5->digest ne $md5bin) {
86 print "$file: $md5->add()-loop failed\n";
87 $failed++;
88 }
89
90 print "not " if $failed;
91 print "ok ", ++$testno, "\n";
92}
93
94
95sub digest_file
96{
97 my($file, $method) = @_;
98 $method ||= "digest";
99 #print "$file $method\n";
100
101 open(FILE, $file) or die "Can't open $file: $!";
102 binmode(FILE);
103 my $digest = Digest::MD5->new->addfile(*FILE)->$method();
104 close(FILE);
105
106 $digest;
107}
108
109sub cat_file
110{
111 my($file) = @_;
112 local $/; # slurp
113 open(FILE, $file) or die "Can't open $file: $!";
114 binmode(FILE);
115 my $tmp = <FILE>;
116 close(FILE);
117 $tmp;
118}
119