Skip to content

Commit

Permalink
rewrite tests (#515)
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
williamh authored Apr 16, 2022
1 parent 0b3f875 commit fdfa6db
Show file tree
Hide file tree
Showing 15 changed files with 141 additions and 112 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/ci-alpine-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ jobs:
- run: meson setup builddir/
env:
CC: gcc
- run: ninja -C builddir
- run: meson compile -C builddir
env:
CC: gcc
- run: meson test --verbose -C builddir
env:
CC: gcc
6 changes: 6 additions & 0 deletions .github/workflows/ci-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ jobs:
- run: ninja -C builddir
env:
CC: gcc
- run: ninja test --verbose -C builddir
env:
CC: gcc


clang-glibc:
Expand All @@ -30,3 +33,6 @@ jobs:
- run: ninja -C builddir
env:
CC: clang
- run: ninja test --verbose -C builddir
env:
CC: clang
2 changes: 1 addition & 1 deletion ci/cirrus.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ set -x

meson build
meson compile -C build
# gmake test
meson test --verbose -C build
3 changes: 2 additions & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ project('OpenRC', 'c',
'prefix=/usr',
'warning_level=3',
],
meson_version : '>=0.53.0')
meson_version : '>=0.53.2')

cc = meson.get_compiler('c')
fs = import('fs')
Expand Down Expand Up @@ -205,6 +205,7 @@ subdir('sh')
subdir('src')
subdir('support')
subdir('sysctl.d')
subdir('test')
subdir('zsh-completion')

meson.add_install_script('tools/meson_runlevels.sh',
Expand Down
11 changes: 11 additions & 0 deletions test/check-obsolete-functions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh

top_srcdir=${SOURCE_ROOT:-..}
. ${top_srcdir}/test/setup_env.sh

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}"
18 changes: 18 additions & 0 deletions test/check-spacing-style.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/sh

top_srcdir=${SOURCE_ROOT:-..}
. ${top_srcdir}/test/setup_env.sh

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}"
19 changes: 19 additions & 0 deletions test/check-trailing-newlines.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh

top_srcdir=${SOURCE_ROOT:-..}
. ${top_srcdir}/test/setup_env.sh

ebegin "Checking trailing newlines in code"
out=$(cd ${top_srcdir};
for f in $(find */ -name '*.[ch]') ; do
while read -r line; do
if [ -n "${line}" ]; then
blankline=
else
blankline=1
fi
done < "${f}"
[ -n "${blankline}" ] && printf "%s\n" "${f}"
done)
[ -z "${out}" ]
eend $? "Trailing newlines need to be deleted:"$'\n'"${out}"
12 changes: 12 additions & 0 deletions test/check-trailing-whitespace.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh

top_srcdir=${SOURCE_ROOT:-..}
. ${top_srcdir}/test/setup_env.sh

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}"
15 changes: 15 additions & 0 deletions test/check-xfunc-usage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh

top_srcdir=${SOURCE_ROOT:-..}
. ${top_srcdir}/test/setup_env.sh

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/shared/helpers.h \
-e src/libeinfo/libeinfo.c)

[ -z "${out}" ]
eend $? "These need to be using the x* variant:"$'\n'"${out}"
26 changes: 26 additions & 0 deletions test/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
if meson.version().version_compare('>=0.56.0')
build_root = meson.project_build_root()
source_root = meson.project_source_root()
else
build_root = meson.build_root()
source_root = meson.source_root()
endif

test_env = [
'BUILD_ROOT=' + build_root,
'SOURCE_ROOT=' + source_root
]

check_obsolete_functions = find_program('check-obsolete-functions.sh')
check_spacing_style = find_program('check-spacing-style.sh')
check_trailing_newlines = find_program('check-trailing-newlines.sh')
check_trailing_whitespace = find_program('check-trailing-whitespace.sh')
check_xfunc_usage = find_program('check-xfunc-usage.sh')

test('check for obsolete functions', check_obsolete_functions, env : test_env)
test('check spacing style', check_spacing_style, env : test_env)
test('check trailing newlines', check_trailing_newlines, env : test_env)
test('check trailing whitespace', check_trailing_whitespace, env : test_env)
test('check xfunc usage', check_xfunc_usage, env : test_env)

subdir('units')
92 changes: 0 additions & 92 deletions test/runtests.sh

This file was deleted.

24 changes: 11 additions & 13 deletions test/setup_env.sh
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
#!/bin/sh

if [ -z "${top_srcdir}" ] ; then
echo "You must set top_srcdir before sourcing this file" 1>&2
if [ -z "${BUILD_ROOT}" ] ; then
printf "%s\n" "You must export BUILD_ROOT before sourcing this file" >&2
exit 1
fi

srcdir=${srcdir:-.}
top_builddir=${top_builddir:-${top_srcdir}}
builddir=${builddir:-${srcdir}}

LD_LIBRARY_PATH=${top_builddir}/src/libeinfo:${top_builddir}/src/librc:${LD_LIBRARY_PATH}
PATH=${top_builddir}/src/rc:${PATH}
export LD_LIBRARY_PATH PATH
if [ -z "${SOURCE_ROOT}" ] ; then
printf "%s\n" "You must export SOURCE_ROOT before sourcing this file" >&2
exit 1
fi

if [ ! -f ${top_srcdir}/sh/functions.sh ] ; then
echo "functions.sh not yet created !?" 1>&2
if [ ! -f ${BUILD_ROOT}/sh/functions.sh ] ; then
printf "%s\n" "functions.sh not yet created !?" >&2
exit 1
elif ! . ${top_srcdir}/sh/functions.sh; then
echo "Sourcing functions.sh failed !?" 1>&2
elif ! . ${BUILD_ROOT}/sh/functions.sh; then
printf "%s\n" "Sourcing functions.sh failed !?" >&2
exit 1
fi

PATH="${BUILD_ROOT}"/src/einfo:${PATH}
13 changes: 10 additions & 3 deletions test/units/is_older_than → test/units/check-is-older-than.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@
# unit test for is_older_than code of baselayout (2008/06/19)
# Author: Matthias Schwarzott <[email protected]>

TMPDIR=tmp-"$(basename "$0")"
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.
Expand Down Expand Up @@ -37,13 +43,14 @@ do_test()
is_older_than "$@"
r2=$?

[ -n "${VERBOSE}" ] && echo "reference = $r1 | OpenRC = $r2"
[ -n "${VERBOSE}" ] &&
printf "reference = %s | OpenRC = %s\n" "$r1" "$r2"
[ $r1 = $r2 ]
}

echo_cmd()
{
[ -n "${VERBOSE}" ] && echo "$@"
[ -n "${VERBOSE}" ] && printf "%s\n" "$@"
"$@"
}

Expand Down
2 changes: 1 addition & 1 deletion test/units/sh_yesno → test/units/check-sh-yesno.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# This file may not be copied, modified, propagated, or distributed
# except according to the terms contained in the LICENSE file.

: ${top_srcdir:=..}
top_srcdir=${SOURCE_ROOT:-..}
. $top_srcdir/test/setup_env.sh

ret=0
Expand Down
5 changes: 5 additions & 0 deletions test/units/meson.build
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit fdfa6db

Please sign in to comment.