combine test directories

This fixes #295.
This commit is contained in:
William Hubbs
2019-02-22 15:19:33 -06:00
parent 6e6902c28b
commit 52d4e56674
8 changed files with 5 additions and 7 deletions

14
test/Makefile Normal file
View File

@@ -0,0 +1,14 @@
all:
install:
ignore:
check test::
./runtests.sh
verbose-test:
VERBOSE=yes ./runtests.sh
clean:
rm -rf *.out tmp-*

92
test/runtests.sh Executable file
View File

@@ -0,0 +1,92 @@
#!/bin/sh
top_srcdir=${top_srcdir:-..}
. ${top_srcdir}/test/setup_env.sh
libeinfo_srcdir="${srcdir}/../libeinfo"
libeinfo_builddir="${builddir}/../libeinfo"
librc_srcdir="${srcdir}/../librc"
librc_builddir="${builddir}/../librc"
rc_srcdir="${srcdir}/../rc"
rc_builddir="${builddir}/../rc"
checkit() {
local base=$1; shift
echo "$@" | tr ' ' '\n' > ${base}.out
diff -u ${base}.list ${base}.out
eend $?
: $(( ret += $? ))
}
ret=0
fail_on_out() {
if [ -n "${out}" ]; then
eerror "Last command failed; failing"
exit 1
fi
}
ebegin "Checking trailing whitespace in code"
# XXX: Should we check man pages too ?
out=$(cd ${top_srcdir}; find */ \
'(' -name '*.[ch]' -o -name '*.in' -o -name '*.sh' ')' \
-exec grep -n -E '[[:space:]]+$' {} +)
[ -z "${out}" ]
eend $? "Trailing whitespace needs to be deleted:"$'\n'"${out}"
fail_on_out
ebegin "Checking trailing newlines in code"
out=$(cd ${top_srcdir};
for f in `find */ -name '*.[ch]'` ; do
sed -n -e :a -e '/^\n*$/{$q1;N;ba' -e '}' $f || echo $f
done)
[ -z "${out}" ]
eend $? "Trailing newlines need to be deleted:"$'\n'"${out}"
fail_on_out
ebegin "Checking for obsolete functions"
out=$(cd ${top_srcdir}; find src -name '*.[ch]' \
! -name queue.h \
-exec grep -n -E '\<(malloc|memory|sys/(errno|fcntl|signal|stropts|termios|unistd))\.h\>' {} +)
[ -z "${out}" ]
eend $? "Avoid these obsolete functions:"$'\n'"${out}"
fail_on_out
ebegin "Checking for x* func usage"
out=$(cd ${top_srcdir}; find src -name '*.[ch]' \
! -name queue.h \
-exec grep -n -E '\<(malloc|strdup)[[:space:]]*\(' {} + \
| grep -v \
-e src/includes/helpers.h \
-e src/libeinfo/libeinfo.c)
[ -z "${out}" ]
eend $? "These need to be using the x* variant:"$'\n'"${out}"
fail_on_out
ebegin "Checking spacing style"
out=$(cd ${top_srcdir}; find src -name '*.[ch]' \
! -name queue.h \
-exec grep -n -E \
-e '\<(for|if|switch|while)\(' \
-e '\<(for|if|switch|while) \( ' \
-e ' ;' \
-e '[[:space:]]$' \
-e '\){' \
-e '(^|[^:])//' \
{} +)
[ -z "${out}" ]
eend $? "These lines violate style rules:"$'\n'"${out}"
fail_on_out
einfo "Running unit tests"
eindent
for u in units/*; do
[ -x "${u}" -a -f "${u}" ] || continue
ebegin "$(basename "${u}")"
./"${u}"
eend $?
: $(( ret += $? ))
done
exit ${ret}

83
test/units/is_older_than Executable file
View File

@@ -0,0 +1,83 @@
#!/bin/sh
# unit test for is_older_than code of baselayout (2008/06/19)
# Author: Matthias Schwarzott <zzam@gentoo.org>
TMPDIR=tmp-"$(basename "$0")"
# Please note that we added this unit test because the function
# should really be called is_newer_than as it's what it's really testing.
# Or more perversly, returning 0 on failure and 1 and success.
# bool is_older_than(reference, files/dirs to check)
#
# return 0 if any of the files/dirs are newer than
# the reference file
#
# EXAMPLE: if is_older_than a.out *.o ; then ...
ref_is_older_than()
{
local x= ref="$1"
shift
for x; do
[ "${x}" -nt "${ref}" ] && return 0
if [ -d "${x}" ]; then
ref_is_older_than "${ref}" "${x}"/* && return 0
fi
done
return 1
}
do_test()
{
local r1= r2=
ref_is_older_than "$@"
r1=$?
is_older_than "$@"
r2=$?
[ -n "${VERBOSE}" ] && echo "reference = $r1 | OpenRC = $r2"
[ $r1 = $r2 ]
}
echo_cmd()
{
[ -n "${VERBOSE}" ] && echo "$@"
"$@"
}
test_it()
{
do_test "${TMPDIR}"/ref "${TMPDIR}"/dir1 "${TMPDIR}"/dir2
}
run_test()
{
echo_cmd mkdir -p "${TMPDIR}"/dir1 "${TMPDIR}"/dir2
echo_cmd touch "${TMPDIR}"/dir1/f1 "${TMPDIR}"/dir1/f2 \
"${TMPDIR}"/dir1/f3 "${TMPDIR}"/dir2/f1 \
"${TMPDIR}"/dir2/f2 "${TMPDIR}"/dir2/f3
echo_cmd sleep 1
echo_cmd touch "${TMPDIR}"/ref
test_it || return 1
echo_cmd sleep 1
echo_cmd touch "${TMPDIR}"/dir1/f2
test_it || return 1
echo_cmd sleep 1
echo_cmd touch "${TMPDIR}"/ref
test_it || return 1
echo_cmd sleep 1
echo_cmd touch "${TMPDIR}"/dir2/f2
test_it || return 1
}
rm -rf "${TMPDIR}"
mkdir "${TMPDIR}"
run_test
retval=$?
rm -rf "${TMPDIR}"
exit ${retval}

33
test/units/sh_yesno Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/sh
# Copyright (c) 2008-2015 The OpenRC Authors.
# See the Authors file at the top-level directory of this distribution and
# https://github.com/OpenRC/openrc/blob/master/AUTHORS
#
# This file is part of OpenRC. It is subject to the license terms in
# the LICENSE file found in the top-level directory of this
# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE
# This file may not be copied, modified, propagated, or distributed
# except according to the terms contained in the LICENSE file.
: ${top_srcdir:=..}
. $top_srcdir/test/setup_env.sh
ret=0
tret=0
for f in yes YES Yes true TRUE True 1 ; do
if ! yesno $f; then
: $(( tret += 1 ))
echo "!$f!"
fi
done
for f in no NO No false FALSE False 0 ; do
if yesno $f; then
: $(( tret += 1 ))
echo "!$f!"
fi
done
: $(( ret += $tret ))
eend $ret
exit $ret