Allows parallel test runs and simplifies optional tests.
/tests/example_exec.o
/tests/example_vfork
/tests/example_vfork.o
-/tests/run.sh.log
-/tests/run.sh.trs
+/tests/test_error.sh.log
+/tests/test_error.sh.trs
+/tests/test_example.sh.log
+/tests/test_example.sh.trs
+/tests/test_exec.sh.log
+/tests/test_exec.sh.trs
+/tests/test_noforce.sh.log
+/tests/test_noforce.sh.trs
+/tests/test_redirects.sh.log
+/tests/test_redirects.sh.trs
+/tests/test_simple.sh.log
+/tests/test_simple.sh.trs
+/tests/test_vfork.sh.log
+/tests/test_vfork.sh.trs
/tests/test-suite.log
-TESTS = run.sh
+TESTS = test_example.sh \
+ test_exec.sh \
+ test_noforce.sh \
+ test_redirects.sh \
+ test_simple.sh
check_PROGRAMS = example example_exec
example_SOURCES = example.c
example_exec_SOURCES = example_exec.c
if HAVE_ERROR_H
+ TESTS += test_error.sh
check_PROGRAMS += example_error
example_error_SOURCES = example_error.c
endif
if HAVE_VFORK
+ TESTS += test_vfork.sh
check_PROGRAMS += example_vfork
example_vfork_SOURCES = example_vfork.c
endif
-dist_check_SCRIPTS = run.sh lib.sh
+dist_check_SCRIPTS = $(TESTS) lib.sh
dist_check_DATA = example.expected \
example_error.expected \
example_exec.expected \
example_simple.sh \
example_simple.sh.expected
-# Used by run.sh.
+# Used by lib.sh.
export EGREP
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+set -e
+
# Allow running the script directly without running `make check`.
test "x$builddir" = x && builddir=.
test "x$EGREP" = x && EGREP='grep -E'
-# In case we are called with LD_PRELOAD already set.
-unset LD_PRELOAD
+# The tests fail if running under coloredstderr because the tests redirect
+# stderr to stdout which is detected by coloredstderr :D (and not colored as a
+# result). Therefore remove LD_PRELOAD and re-exec the test.
+if test -n "$LD_PRELOAD"; then
+ unset LD_PRELOAD
+ exec "$0"
+fi
+
+# Use valgrind to run the tests if it's available.
+valgrind_cmd=
+if type valgrind >/dev/null 2>&1; then
+ valgrind_cmd='valgrind --quiet --error-exitcode=1'
+fi
+
# Clean locale for reproducible tests.
LC_ALL=C
unset LANGUAGE
shift
shift
+ output="output-$$"
+
(
# Standard setup.
LD_PRELOAD="$library"
export COLORED_STDERR_FORCE_WRITE
fi
- $valgrind_cmd "$@" "$testcase" > output 2>&1
+ $valgrind_cmd "$@" "$testcase" > "$output" 2>&1
)
- diff -u "$expected" output \
+ diff -u "$expected" "$output" \
|| die 'failed!'
- rm output
+ rm "$output"
echo 'passed.'
}
+++ /dev/null
-#!/bin/sh
-
-# Test suite for coloredstderr.
-
-# Copyright (C) 2013 Simon Ruderich
-#
-# 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 <http://www.gnu.org/licenses/>.
-
-
-set -e
-
-
-# The tests fail if running under coloredstderr because the tests redirect
-# stderr to stdout which is detected by coloredstderr :D (and not colored as a
-# result). Therefore remove LD_PRELOAD and re-exec the test.
-if test -n "$LD_PRELOAD"; then
- unset LD_PRELOAD
- exec "$0"
-fi
-
-test "x$srcdir" = x && srcdir=.
-. "$srcdir/lib.sh"
-
-
-# Use valgrind to run the tests if it's available.
-valgrind_cmd=
-if type valgrind >/dev/null 2>&1; then
- valgrind_cmd='valgrind --quiet --error-exitcode=1'
-fi
-
-
-# Make sure we don't write to non-ttys by default.
-force_write=
-test_script example_noforce.sh
-force_write=1
-
-test_script example_simple.sh
-test_script example_redirects.sh
-test_program example
-test_program example_exec
-test -x "$builddir/example_vfork" && test_program example_vfork
-test -x "$builddir/example_error" && test_program example_error
-
-test_script_subshell example_simple.sh
-test_script_subshell example_redirects.sh
-test_program_subshell example
-test_program_subshell example_exec
-test -x "$builddir/example_vfork" && test_program_subshell example_vfork
-test -x "$builddir/example_error" && test_program_subshell example_error
-
-# Necessary in case the test -x evaluates to false.
-true
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+test_program example_error
+test_program_subshell example_error
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+test_program example
+test_program_subshell example
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+test_program example_exec
+test_program_subshell example_exec
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+# Make sure we don't write to non-ttys by default.
+force_write=
+test_script example_noforce.sh
+force_write=1
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+test_script example_redirects.sh
+test_script_subshell example_redirects.sh
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+test_script example_simple.sh
+test_script_subshell example_simple.sh
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013 Simon Ruderich
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+test_program example_vfork
+test_program_subshell example_vfork