openat: don’t close (-1)
[gnulib.git] / tests / test-init.sh
blob8f20fe61784ab9b7f0873fb943e14726ba3093e6
1 #!/bin/sh
2 # Unit tests for init.sh
3 # Copyright (C) 2011-2024 Free Software Foundation, Inc.
4 # This file is part of the GNUlib Library.
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.
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.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <https://www.gnu.org/licenses/>. */
19 : "${srcdir=.}"
20 . "$srcdir/init.sh"; path_prepend_ .
22 fail=0
24 test_compare()
26 touch empty || fail=1
27 echo xyz > in || fail=1
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
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
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
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
52 compare empty in >out 2>err && fail=1
53 # Compare against expected output only if compare is using diff -u.
54 if grep @ out >/dev/null; then
55 # Remove the TAB-date suffix on each --- and +++ line,
56 # for both the expected and the actual output files.
57 # Also remove the @@ line, since Solaris 5.10 and GNU diff formats differ:
58 # -@@ -0,0 +1 @@
59 # +@@ -1,0 +1,1 @@
60 # Also, remove space after leading '+', since AIX 7.1 diff outputs a space.
61 sed 's/ .*//;/^@@/d;s/^+ /+/' out > k && mv k out
62 cat <<\EOF > exp
63 --- empty
64 +++ in
65 +xyz
66 EOF
67 compare exp out || fail=1
69 case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac
72 test_compare
74 Exit $fail