summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am3
-rw-r--r--configure.ac1
-rw-r--r--tests/.gitignore1
-rw-r--r--tests/Makemodule.am11
-rw-r--r--tests/commands.sh (renamed from tests/commands.sh.in)4
-rw-r--r--tests/functions.sh30
-rwxr-xr-xtests/run-nonroot.sh9
-rwxr-xr-xtests/run.sh58
8 files changed, 85 insertions, 32 deletions
diff --git a/Makefile.am b/Makefile.am
index fe74e6856..e22dad339 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -47,6 +47,7 @@ INSTALL_EXEC_HOOKS =
UNINSTALL_HOOKS =
INSTALL_DATA_HOOKS =
CLEAN_LOCALS =
+CHECK_LOCALS =
EXTRA_DIST = man/ru/ddate.1
CLEANFILES =
@@ -153,3 +154,5 @@ uninstall-hook: $(UNINSTALL_HOOKS)
install-data-hook: $(INSTALL_DATA_HOOKS)
clean-local: $(CLEAN_LOCALS)
+
+check-local: $(CHECK_LOCALS)
diff --git a/configure.ac b/configure.ac
index 763ecff9b..edb2d7851 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1341,7 +1341,6 @@ misc-utils/uuidd.rc
misc-utils/uuidd.service
misc-utils/uuidd.socket
po/Makefile.in
-tests/commands.sh
])
diff --git a/tests/.gitignore b/tests/.gitignore
index c22f5081d..d937c7fe4 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,3 +1,2 @@
-commands.sh
diff
output
diff --git a/tests/Makemodule.am b/tests/Makemodule.am
index a5e26bfb1..00da7d35d 100644
--- a/tests/Makemodule.am
+++ b/tests/Makemodule.am
@@ -4,12 +4,17 @@ include tests/helpers/Makemodule.am
EXTRA_DIST += \
tests/expected \
tests/functions.sh \
+ tests/commands.sh \
tests/run.sh \
- tests/run-nonroot.sh \
tests/ts
clean-local-tests:
- rm -rf output diff
+ rm -rf $(top_builddir)/tests/output $(top_builddir)/tests/diff
-TESTS += tests/run-nonroot.sh
CLEAN_LOCALS += clean-local-tests
+
+
+check-local-tests: $(check_PROGRAMS)
+ $(top_srcdir)/tests/run.sh --srcdir=$(abs_top_srcdir) --builddir=$(abs_top_builddir) --nonroot
+
+CHECK_LOCALS += check-local-tests
diff --git a/tests/commands.sh.in b/tests/commands.sh
index 71934d8a6..8a1577ec9 100644
--- a/tests/commands.sh.in
+++ b/tests/commands.sh
@@ -1,7 +1,3 @@
-
-top_builddir=@abs_top_builddir@
-top_srcdir=@abs_top_srcdir@
-
# Misc settings
TS_TESTUSER=${TS_TESTUSER:-"test"}
diff --git a/tests/functions.sh b/tests/functions.sh
index 9716534a2..8293539d2 100644
--- a/tests/functions.sh
+++ b/tests/functions.sh
@@ -86,6 +86,12 @@ function ts_has_option {
echo -n $ALL | sed 's/ //g' | awk 'BEGIN { FS="="; RS="--" } /('$NAME'$|'$NAME'=)/ { print "yes" }'
}
+function ts_option_argument {
+ NAME="$1"
+ ALL="$2"
+ echo -n $ALL | sed 's/ //g' | awk 'BEGIN { FS="="; RS="--" } /'$NAME'=/ { print $2 }'
+}
+
function ts_init_core_env {
TS_NS="$TS_COMPONENT/$TS_TESTNAME"
TS_OUTPUT="$TS_OUTDIR/$TS_TESTNAME"
@@ -118,11 +124,28 @@ function ts_init_env {
LC_ALL="POSIX"
CHARSET="UTF-8"
+ export LANG LANGUAGE LC_ALL CHARSET
+
mydir=$(ts_canonicalize "$mydir")
- export LANG LANGUAGE LC_ALL CHARSET
+ # automake directories
+ top_srcdir=$(ts_option_argument "srcdir" "$*")
+ top_builddir=$(ts_option_argument "builddir" "$*")
+ # where is this script
TS_TOPDIR=$(ts_abspath $mydir/../../)
+
+ # default
+ if [ -z "$top_srcdir" ]; then
+ top_srcdir="$TS_TOPDIR/.."
+ fi
+ if [ -z "$top_builddir" ]; then
+ top_builddir="$TS_TOPDIR/.."
+ fi
+
+ top_srcdir=$(ts_abspath $top_srcdir)
+ top_builddir=$(ts_abspath $top_builddir)
+
TS_SCRIPT="$mydir/$(basename $0)"
TS_SUBDIR=$(dirname $TS_SCRIPT)
TS_TESTNAME=$(basename $TS_SCRIPT)
@@ -133,8 +156,8 @@ function ts_init_env {
TS_SELF="$TS_SUBDIR"
- TS_OUTDIR="$TS_TOPDIR/output/$TS_COMPONENT"
- TS_DIFFDIR="$TS_TOPDIR/diff/$TS_COMPONENT"
+ TS_OUTDIR="$top_builddir/tests/output/$TS_COMPONENT"
+ TS_DIFFDIR="$top_builddir/tests/diff/$TS_COMPONENT"
ts_init_core_env
@@ -142,7 +165,6 @@ function ts_init_env {
BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab"
-
declare -a TS_SUID_PROGS
declare -a TS_SUID_USER
declare -a TS_SUID_GROUP
diff --git a/tests/run-nonroot.sh b/tests/run-nonroot.sh
deleted file mode 100755
index 150a99f3a..000000000
--- a/tests/run-nonroot.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-MYUID=$(id -ru)
-if [ $MYUID -eq 0 ]; then
- echo "The automatically executed tests suite is allowed for non-root users only."
- exit 0
-fi
-
-exec $(cd $(dirname $0) && pwd)/run.sh
diff --git a/tests/run.sh b/tests/run.sh
index 15bce71ed..6ed05c1fa 100755
--- a/tests/run.sh
+++ b/tests/run.sh
@@ -20,6 +20,9 @@ TS_TOPDIR=$(cd $(dirname $0) && pwd)
SUBTESTS=
OPTS=
+top_srcdir=
+top_builddir=
+
while [ -n "$1" ]; do
case "$1" in
--force)
@@ -31,9 +34,34 @@ while [ -n "$1" ]; do
--memcheck)
OPTS="$OPTS --memcheck"
;;
+ --verbose)
+ OPTS="$OPTS --verbose"
+ ;;
+ --nonroot)
+ if [ $(id -ru) -eq 0 ]; then
+ echo "Ignore utils-linux test suite [non-root UID expected]."
+ exit 0
+ fi
+ ;;
+ --srcdir=*)
+ top_srcdir="${1##--srcdir=}"
+ ;;
+ --builddir=*)
+ top_builddir="${1##--builddir=}"
+ ;;
--*)
echo "Unknown option $1"
- echo "Usage: run [--fake] [--force] [<component> ...]"
+ echo "Usage: "
+ echo " $(basename $0) [options] [<component> ...]"
+ echo "Options:"
+ echo " --force execute demanding tests"
+ echo " --fake do not run, setup tests only"
+ echo " --memcheck run with valgrind"
+ echo " --verbose verbose mode"
+ echo " --nonroot ignore test suite if user is root"
+ echo " --srcdir=<path> autotools top source directory"
+ echo " --builddir=<path> autotools top build directory"
+ echo
exit 1
;;
@@ -44,11 +72,26 @@ while [ -n "$1" ]; do
shift
done
+# For compatibility with autotools is necessary to differentiate between source
+# (with test scripts) and build (with temporary files) directories when
+# executed by our build-system.
+#
+# The default is the source tree with this script.
+#
+if [ -z "$top_srcdir" ]; then
+ top_srcdir="$TS_TOPDIR/.."
+fi
+if [ -z "$top_builddir" ]; then
+ top_builddir="$TS_TOPDIR/.."
+fi
+
+OPTS="$OPTS --srcdir=$top_srcdir --builddir=$top_builddir"
+
if [ -n "$SUBTESTS" ]; then
# selected tests only
for s in $SUBTESTS; do
- if [ -d "$TS_TOPDIR/ts/$s" ]; then
- co=$(find $TS_TOPDIR/ts/$s -type f -perm /a+x -regex ".*/[^\.~]*" | sort)
+ if [ -d "$top_srcdir/tests/ts/$s" ]; then
+ co=$(find $top_srcdir/tests/ts/$s -type f -perm /a+x -regex ".*/[^\.~]*" | sort)
comps="$comps $co"
else
echo "Unknown test component '$s'"
@@ -56,17 +99,12 @@ if [ -n "$SUBTESTS" ]; then
fi
done
else
- # all tests
- if [ ! -f "$TS_TOPDIR/../test_tt" ]; then
+ if [ ! -f "$top_builddir/test_tt" ]; then
echo "Tests not compiled! Run 'make check' to fix the problem."
exit 1
fi
- if [ ! -f "$TS_TOPDIR/commands.sh" ]; then
- echo "Not ready to run tests! Run './configure' or './config.status' to fix the problem."
- exit 1
- fi
- comps=$(find $TS_TOPDIR/ts/ -type f -perm /a+x -regex ".*/[^\.~]*" | sort)
+ comps=$(find $top_srcdir/tests/ts/ -type f -perm /a+x -regex ".*/[^\.~]*" | sort)
fi