# HG changeset patch # User Jim Meyering # Date 1324634086 -3600 # Node ID 9dbd02efb30b930b638901a35021bf8cb505d976 # Parent 50998a8507ac6d40d5ff6ff2442b1906b3a753b3 test-framework-sh: add minimal tests of init.sh's compare function * modules/test-framework-sh-tests: New file. * tests/test-init.sh: New file. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-12-22 Jim Meyering + test-framework-sh: add minimal tests of init.sh's compare function + * modules/test-framework-sh-tests: New file. + * tests/test-init.sh: New file. + test-framework-sh: new module * modules/test-framework-sh: New file. * MODULES.html.sh (Support for maintaining and releasing projects): diff --git a/modules/test-framework-sh-tests b/modules/test-framework-sh-tests new file mode 100644 --- /dev/null +++ b/modules/test-framework-sh-tests @@ -0,0 +1,9 @@ +Files: +tests/test-init.sh + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS += test-init.sh diff --git a/tests/test-init.sh b/tests/test-init.sh new file mode 100755 --- /dev/null +++ b/tests/test-init.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# Unit tests for init.sh +# Copyright (C) 2011 Free Software Foundation, Inc. +# This file is part of the GNUlib Library. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . */ + +: ${srcdir=.} +. "$srcdir/init.sh"; path_prepend_ . + +fail=0 + +test_compare() +{ + touch empty || fail=1 + echo xyz > in || fail=1 + + compare /dev/null /dev/null >out 2>err || fail=1 + test -s out && fail_ "out not empty: $(cat out)" + # "err" should be empty, too, but has "set -x" output when VERBOSE=yes + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare /dev/null empty >out 2>err || fail=1 + test -s out && fail_ "out not empty: $(cat out)" + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare in in >out 2>err || fail=1 + test -s out && fail_ "out not empty: $(cat out)" + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare /dev/null in >out 2>err && fail=1 + cat <<\EOF > exp +diff -u /dev/null in +--- /dev/null 1970-01-01 ++++ in 1970-01-01 ++xyz +EOF + compare exp out || fail=1 + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare empty in >out 2>err && fail=1 + # Remove the TAB-date suffix on each --- and +++ line, + # for both the expected and the actual output files. + cat <<\EOF > exp +--- empty ++++ in +@@ -0,0 +1 @@ ++xyz +EOF + sed 's/ .*//' out > k && mv k out + compare exp out || fail=1 + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac +} + +test_compare + +Exit $fail