From fdfa6dbb0e69742029d53f0e163b8e7e7e6860f5 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 16 Apr 2022 15:13:08 -0500 Subject: rewrite tests (#515) * rewrite tests to work with meson This ports our tests to meson and makes them able to be run in parallel. * add tests to ci * rewrite test/check-trailing-newlines in bash This test was using a GNU sed command which does not work on Alpine Linux. --- test/units/check-is-older-than.sh | 90 +++++++++++++++++++++++++++++++++++++++ test/units/check-sh-yesno.sh | 33 ++++++++++++++ test/units/is_older_than | 83 ------------------------------------ test/units/meson.build | 5 +++ test/units/sh_yesno | 33 -------------- 5 files changed, 128 insertions(+), 116 deletions(-) create mode 100755 test/units/check-is-older-than.sh create mode 100755 test/units/check-sh-yesno.sh delete mode 100755 test/units/is_older_than create mode 100644 test/units/meson.build delete mode 100755 test/units/sh_yesno (limited to 'test/units') diff --git a/test/units/check-is-older-than.sh b/test/units/check-is-older-than.sh new file mode 100755 index 00000000..8987fcd2 --- /dev/null +++ b/test/units/check-is-older-than.sh @@ -0,0 +1,90 @@ +#!/bin/sh +# unit test for is_older_than code of baselayout (2008/06/19) +# Author: Matthias Schwarzott + +if [ -z "${BUILD_ROOT}" ]; then + printf "%s\n" "BUILD_ROOT must be defined" >&2 + exit 1 +fi +PATH="${BUILD_ROOT}"/src/is_older_than:${PATH} + +TMPDIR="${BUILD_ROOT}"/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}" ] && + printf "reference = %s | OpenRC = %s\n" "$r1" "$r2" + [ $r1 = $r2 ] +} + +echo_cmd() +{ + [ -n "${VERBOSE}" ] && printf "%s\n" "$@" + "$@" +} + +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/check-sh-yesno.sh b/test/units/check-sh-yesno.sh new file mode 100755 index 00000000..ecc2f6dd --- /dev/null +++ b/test/units/check-sh-yesno.sh @@ -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/HEAD/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/HEAD/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +top_srcdir=${SOURCE_ROOT:-..} +. $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 diff --git a/test/units/is_older_than b/test/units/is_older_than deleted file mode 100755 index 47a62d78..00000000 --- a/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/units/meson.build b/test/units/meson.build new file mode 100644 index 00000000..23c2758a --- /dev/null +++ b/test/units/meson.build @@ -0,0 +1,5 @@ +is_older_than = find_program('check-is-older-than.sh') +sh_yesno = find_program('check-sh-yesno.sh') + +test('is_older_than', is_older_than, env : test_env) +test('sh_yesno', sh_yesno, env : test_env) diff --git a/test/units/sh_yesno b/test/units/sh_yesno deleted file mode 100755 index 380864ee..00000000 --- a/test/units/sh_yesno +++ /dev/null @@ -1,33 +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/HEAD/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/HEAD/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