test-framework-sh: add minimal tests of init.sh's compare function
[gnulib.git] / tests / test-init.sh
1 #!/bin/sh
2 # Unit tests for init.sh
3 # Copyright (C) 2011 Free Software Foundation, Inc.
4 # This file is part of the GNUlib Library.
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18
19 : ${srcdir=.}
20 . "$srcdir/init.sh"; path_prepend_ .
21
22 fail=0
23
24 test_compare()
25 {
26   touch empty || fail=1
27   echo xyz > in || fail=1
28
29   compare /dev/null /dev/null >out 2>err || fail=1
30   test -s out && fail_ "out not empty: $(cat out)"
31   # "err" should be empty, too, but has "set -x" output when VERBOSE=yes
32   case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac
33
34   compare /dev/null empty >out 2>err || fail=1
35   test -s out && fail_ "out not empty: $(cat out)"
36   case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac
37
38   compare in in >out 2>err || fail=1
39   test -s out && fail_ "out not empty: $(cat out)"
40   case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac
41
42   compare /dev/null in >out 2>err && fail=1
43   cat <<\EOF > exp
44 diff -u /dev/null in
45 --- /dev/null   1970-01-01
46 +++ in  1970-01-01
47 +xyz
48 EOF
49   compare exp out || fail=1
50   case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac
51
52   compare empty in >out 2>err && fail=1
53   # Remove the TAB-date suffix on each --- and +++ line,
54   # for both the expected and the actual output files.
55   cat <<\EOF > exp
56 --- empty
57 +++ in
58 @@ -0,0 +1 @@
59 +xyz
60 EOF
61   sed 's/       .*//' out > k && mv k out
62   compare exp out || fail=1
63   case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac
64 }
65
66 test_compare
67
68 Exit $fail