]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/commitdiff
tests: Split run.sh in multiple test files.
authorSimon Ruderich <simon@ruderich.org>
Wed, 12 Jun 2013 23:26:25 +0000 (01:26 +0200)
committerSimon Ruderich <simon@ruderich.org>
Wed, 12 Jun 2013 23:26:25 +0000 (01:26 +0200)
Allows parallel test runs and simplifies optional tests.

.gitignore
tests/Makefile.am
tests/lib.sh
tests/run.sh [deleted file]
tests/test_error.sh [new file with mode: 0755]
tests/test_example.sh [new file with mode: 0755]
tests/test_exec.sh [new file with mode: 0755]
tests/test_noforce.sh [new file with mode: 0755]
tests/test_redirects.sh [new file with mode: 0755]
tests/test_simple.sh [new file with mode: 0755]
tests/test_vfork.sh [new file with mode: 0755]

index a2eff8272dc286d44109d39ab4644dd407f9b20b..6401ebd9e7fd9d0671df865a53185df01135de4c 100644 (file)
 /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
index 32d9ca35431ac1bff830c4454de8e8addb1a73b2..3ccce2447a739840662e9a9fbe5d84561e411ade 100644 (file)
@@ -1,18 +1,24 @@
-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 \
@@ -24,5 +30,5 @@ dist_check_DATA = example.expected \
                   example_simple.sh \
                   example_simple.sh.expected
 
-# Used by run.sh.
+# Used by lib.sh.
 export EGREP
index 3e29a55023816cc539065c20c1b8ce898b00b7db..b1c8bc0276e22ac23215726fdb086e307ea990bb 100644 (file)
 # 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
@@ -56,6 +70,8 @@ run_test() {
     shift
     shift
 
+    output="output-$$"
+
     (
         # Standard setup.
         LD_PRELOAD="$library"
@@ -74,12 +90,12 @@ run_test() {
             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.'
 }
 
diff --git a/tests/run.sh b/tests/run.sh
deleted file mode 100755 (executable)
index a203d48..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/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
diff --git a/tests/test_error.sh b/tests/test_error.sh
new file mode 100755 (executable)
index 0000000..f01c11b
--- /dev/null
@@ -0,0 +1,23 @@
+#!/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
diff --git a/tests/test_example.sh b/tests/test_example.sh
new file mode 100755 (executable)
index 0000000..5a1470f
--- /dev/null
@@ -0,0 +1,23 @@
+#!/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
diff --git a/tests/test_exec.sh b/tests/test_exec.sh
new file mode 100755 (executable)
index 0000000..7f8e85e
--- /dev/null
@@ -0,0 +1,23 @@
+#!/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
diff --git a/tests/test_noforce.sh b/tests/test_noforce.sh
new file mode 100755 (executable)
index 0000000..dad525d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/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
diff --git a/tests/test_redirects.sh b/tests/test_redirects.sh
new file mode 100755 (executable)
index 0000000..1737566
--- /dev/null
@@ -0,0 +1,23 @@
+#!/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
diff --git a/tests/test_simple.sh b/tests/test_simple.sh
new file mode 100755 (executable)
index 0000000..b78c88d
--- /dev/null
@@ -0,0 +1,23 @@
+#!/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
diff --git a/tests/test_vfork.sh b/tests/test_vfork.sh
new file mode 100755 (executable)
index 0000000..7e00d44
--- /dev/null
@@ -0,0 +1,23 @@
+#!/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