mirror of
https://github.com/FAUSheppy/colorredstderr-mirror
synced 2025-12-09 16:38:32 +01:00
tests: Split run.sh in multiple test files.
Allows parallel test runs and simplifies optional tests.
This commit is contained in:
16
.gitignore
vendored
16
.gitignore
vendored
@@ -29,6 +29,18 @@
|
||||
/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
|
||||
|
||||
@@ -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
|
||||
|
||||
26
tests/lib.sh
26
tests/lib.sh
@@ -15,13 +15,27 @@
|
||||
# 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.'
|
||||
}
|
||||
|
||||
|
||||
63
tests/run.sh
63
tests/run.sh
@@ -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
|
||||
23
tests/test_error.sh
Executable file
23
tests/test_error.sh
Executable file
@@ -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
|
||||
23
tests/test_example.sh
Executable file
23
tests/test_example.sh
Executable file
@@ -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
|
||||
23
tests/test_exec.sh
Executable file
23
tests/test_exec.sh
Executable file
@@ -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
|
||||
25
tests/test_noforce.sh
Executable file
25
tests/test_noforce.sh
Executable file
@@ -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
|
||||
23
tests/test_redirects.sh
Executable file
23
tests/test_redirects.sh
Executable file
@@ -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
|
||||
23
tests/test_simple.sh
Executable file
23
tests/test_simple.sh
Executable file
@@ -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
|
||||
23
tests/test_vfork.sh
Executable file
23
tests/test_vfork.sh
Executable file
@@ -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
|
||||
Reference in New Issue
Block a user