d9a9206c9fb7d5134d8c75a6bc4a102062516145
[platform/upstream/coreutils.git] / tests / sha1sum / basic-1
1 #!/bin/sh
2
3 : ${PERL=perl}
4 : ${srcdir=.}
5
6 $PERL -e 1 > /dev/null 2>&1 || {
7   echo 1>&2 "$0: configure didn't find a usable version of Perl," \
8     "so can't run this test"
9   exit 77
10 }
11
12 exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
13 require 5.003;
14 use strict;
15
16 (my $program_name = $0) =~ s|.*/||;
17
18 # Turn off localisation of executable's ouput.
19 @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
20
21 my $sha_degenerate = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
22
23 my @Tests =
24     (
25      ['s1', {IN=> {f=> ''}},
26                         {OUT=>"$sha_degenerate  f\n"}],
27      ['s2', {IN=> {f=> 'a'}},
28                         {OUT=>"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8  f\n"}],
29      ['s3', {IN=> {f=> 'abc'}},
30                         {OUT=>"a9993e364706816aba3e25717850c26c9cd0d89d  f\n"}],
31      ['s4',
32       {IN=> {f=> 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'}},
33                         {OUT=>"84983e441c3bd26ebaae4aa1f95129e5e54670f1  f\n"}],
34      ['s5', {IN=> {f=> 'abcdefghijklmnopqrstuvwxyz'}},
35                         {OUT=>"32d10c7b8cf96570ca04ce37f2a19d84240d3a89  f\n"}],
36      ['s6', {IN=> {f=> join ('', 'A'..'Z', 'a'..'z', '0'..'9')}},
37                         {OUT=>"761c457bf73b14d27e9e9265c46f4b4dda11f940  f\n"}],
38      ['s7', {IN=> {f=> '1234567890' x 8}},
39                         {OUT=>"50abf5706a150990a08b2c5ea40fa0e585554732  f\n"}],
40      ['million-a', {IN=> {f=> 'a' x 1000000}},
41                         {OUT=>"34aa973cd4c4daa4f61eeb2bdbad27316534016f  f\n"}],
42      ['bs-sha', {IN=> {".\\foo"=> ''}},
43                         {OUT=>"\\$sha_degenerate  .\\\\foo\n"}],
44      # The sha1sum and md5sum drivers share a lot of code.
45      # Ensure that sha1sum does *not* share the part that makes
46      # md5sum accept BSD format.
47      ['check-bsd', '--check', {IN=> {'f.md5' => "MD5 (f) = $sha_degenerate\n"}},
48                         {AUX=> {f=> ''}},
49                         {ERR=>"sha1sum: f.md5: no properly formatted "
50                           . "SHA1 checksum lines found\n"},
51                         {EXIT=> 1}],
52      ['check-bsd2', '--check',
53                         {IN=> {'f.sha1' => "SHA1 (f) = $sha_degenerate\n"}},
54                         {AUX=> {f=> ''}}, {OUT=>"f: OK\n"}],
55      ['check-bsd3', '--check', '--status',
56                         {IN=> {'f.sha1' => "SHA1 (f) = $sha_degenerate\n"}},
57                         {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
58     );
59
60 # Insert the `--text' argument for each test.
61 my $t;
62 foreach $t (@Tests)
63   {
64     splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
65   }
66
67 my $save_temps = $ENV{DEBUG};
68 my $verbose = $ENV{VERBOSE};
69
70 my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
71 my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
72 exit $fail;
73 EOF