From 52d4e566743f57b9de81c77fdb605c171c02eacb Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Fri, 22 Feb 2019 15:19:33 -0600 Subject: combine test directories This fixes #295. --- Makefile | 3 +- mk/scripts.mk | 1 - sh/Makefile | 1 - sh/runtests.sh | 34 ---------------- src/Makefile | 2 +- src/test/Makefile | 14 ------- src/test/runtests.sh | 92 -------------------------------------------- src/test/units/is_older_than | 83 --------------------------------------- test/Makefile | 14 +++++++ test/runtests.sh | 92 ++++++++++++++++++++++++++++++++++++++++++++ test/units/is_older_than | 83 +++++++++++++++++++++++++++++++++++++++ test/units/sh_yesno | 33 ++++++++++++++++ 12 files changed, 225 insertions(+), 227 deletions(-) delete mode 100755 sh/runtests.sh delete mode 100644 src/test/Makefile delete mode 100755 src/test/runtests.sh delete mode 100755 src/test/units/is_older_than create mode 100644 test/Makefile create mode 100755 test/runtests.sh create mode 100755 test/units/is_older_than create mode 100755 test/units/sh_yesno diff --git a/Makefile b/Makefile index 2c8527b5..b02e1c50 100644 --- a/Makefile +++ b/Makefile @@ -33,8 +33,9 @@ ifeq (${MKZSHCOMP},yes) SUBDIR+= zsh-completion endif -# We need to ensure that runlevels is done last +# We need to ensure that runlevels is done last other than test SUBDIR+= runlevels +SUBDIR+= test INSTALLAFTER= _installafter diff --git a/mk/scripts.mk b/mk/scripts.mk index 40cb4d65..147e6643 100644 --- a/mk/scripts.mk +++ b/mk/scripts.mk @@ -53,7 +53,6 @@ realinstall: ${BIN} ${CONF} ${INC} install: all realinstall ${INSTALLAFTER} check test:: - @if test -e runtests.sh ; then ./runtests.sh || exit $$? ; fi # A lot of scripts don't have anything to clean # Also, some rm implentation require a file argument regardless of error diff --git a/sh/Makefile b/sh/Makefile index ef590e81..7f5dfb21 100644 --- a/sh/Makefile +++ b/sh/Makefile @@ -31,4 +31,3 @@ _installafter: ln -snf ${LIBEXECDIR}/sh/functions.sh ${DESTDIR}/${INITDIR} || exit $$? check test:: - ./runtests.sh diff --git a/sh/runtests.sh b/sh/runtests.sh deleted file mode 100755 index b42a3577..00000000 --- a/sh/runtests.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/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 -ebegin "Testing yesno()" -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 -eend $tret -: $(( ret += $tret )) - -exit $ret diff --git a/src/Makefile b/src/Makefile index e3750347..0148c4d1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,7 +1,7 @@ # Copyright (c) 2007-2008 Roy Marples # Released under the 2-clause BSD license. -SUBDIR= test libeinfo librc rc +SUBDIR= libeinfo librc rc MK= ../mk include ${MK}/subdir.mk diff --git a/src/test/Makefile b/src/test/Makefile deleted file mode 100644 index b57b8903..00000000 --- a/src/test/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -all: - -install: - -ignore: - -check test:: - ./runtests.sh - -verbose-test: - VERBOSE=yes ./runtests.sh - -clean: - rm -rf *.out tmp-* diff --git a/src/test/runtests.sh b/src/test/runtests.sh deleted file mode 100755 index 269f26f1..00000000 --- a/src/test/runtests.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/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} diff --git a/src/test/units/is_older_than b/src/test/units/is_older_than deleted file mode 100755 index 47a62d78..00000000 --- a/src/test/units/is_older_than +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/sh -# unit test for is_older_than code of baselayout (2008/06/19) -# Author: Matthias Schwarzott - -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} diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 00000000..b57b8903 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,14 @@ +all: + +install: + +ignore: + +check test:: + ./runtests.sh + +verbose-test: + VERBOSE=yes ./runtests.sh + +clean: + rm -rf *.out tmp-* diff --git a/test/runtests.sh b/test/runtests.sh new file mode 100755 index 00000000..5e21d2ab --- /dev/null +++ b/test/runtests.sh @@ -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} diff --git a/test/units/is_older_than b/test/units/is_older_than new file mode 100755 index 00000000..47a62d78 --- /dev/null +++ b/test/units/is_older_than @@ -0,0 +1,83 @@ +#!/bin/sh +# unit test for is_older_than code of baselayout (2008/06/19) +# Author: Matthias Schwarzott + +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} diff --git a/test/units/sh_yesno b/test/units/sh_yesno new file mode 100755 index 00000000..bff4693a --- /dev/null +++ b/test/units/sh_yesno @@ -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 -- cgit v1.2.3