UNINSTALL_HOOKS =
INSTALL_DATA_HOOKS =
CLEAN_LOCALS =
+CHECK_LOCALS =
EXTRA_DIST = man/ru/ddate.1
CLEANFILES =
install-data-hook: $(INSTALL_DATA_HOOKS)
clean-local: $(CLEAN_LOCALS)
+
+check-local: $(CHECK_LOCALS)
misc-utils/uuidd.service
misc-utils/uuidd.socket
po/Makefile.in
-tests/commands.sh
])
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
-
-top_builddir=@abs_top_builddir@
-top_srcdir=@abs_top_srcdir@
-
# Misc settings
TS_TESTUSER=${TS_TESTUSER:-"test"}
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"
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)
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
BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab"
-
declare -a TS_SUID_PROGS
declare -a TS_SUID_USER
declare -a TS_SUID_GROUP
+++ /dev/null
-#!/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
SUBTESTS=
OPTS=
+top_srcdir=
+top_builddir=
+
while [ -n "$1" ]; do
case "$1" in
--force)
--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
;;
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'"
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