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.
This commit is contained in:
parent
0b3f8750e7
commit
fdfa6dbb0e
5
.github/workflows/ci-alpine-linux.yml
vendored
5
.github/workflows/ci-alpine-linux.yml
vendored
@ -23,6 +23,9 @@ jobs:
|
|||||||
- run: meson setup builddir/
|
- run: meson setup builddir/
|
||||||
env:
|
env:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
- run: ninja -C builddir
|
- run: meson compile -C builddir
|
||||||
|
env:
|
||||||
|
CC: gcc
|
||||||
|
- run: meson test --verbose -C builddir
|
||||||
env:
|
env:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
|
6
.github/workflows/ci-ubuntu.yml
vendored
6
.github/workflows/ci-ubuntu.yml
vendored
@ -16,6 +16,9 @@ jobs:
|
|||||||
- run: ninja -C builddir
|
- run: ninja -C builddir
|
||||||
env:
|
env:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
|
- run: ninja test --verbose -C builddir
|
||||||
|
env:
|
||||||
|
CC: gcc
|
||||||
|
|
||||||
|
|
||||||
clang-glibc:
|
clang-glibc:
|
||||||
@ -30,3 +33,6 @@ jobs:
|
|||||||
- run: ninja -C builddir
|
- run: ninja -C builddir
|
||||||
env:
|
env:
|
||||||
CC: clang
|
CC: clang
|
||||||
|
- run: ninja test --verbose -C builddir
|
||||||
|
env:
|
||||||
|
CC: clang
|
||||||
|
@ -18,4 +18,4 @@ set -x
|
|||||||
|
|
||||||
meson build
|
meson build
|
||||||
meson compile -C build
|
meson compile -C build
|
||||||
# gmake test
|
meson test --verbose -C build
|
||||||
|
@ -6,7 +6,7 @@ project('OpenRC', 'c',
|
|||||||
'prefix=/usr',
|
'prefix=/usr',
|
||||||
'warning_level=3',
|
'warning_level=3',
|
||||||
],
|
],
|
||||||
meson_version : '>=0.53.0')
|
meson_version : '>=0.53.2')
|
||||||
|
|
||||||
cc = meson.get_compiler('c')
|
cc = meson.get_compiler('c')
|
||||||
fs = import('fs')
|
fs = import('fs')
|
||||||
@ -205,6 +205,7 @@ subdir('sh')
|
|||||||
subdir('src')
|
subdir('src')
|
||||||
subdir('support')
|
subdir('support')
|
||||||
subdir('sysctl.d')
|
subdir('sysctl.d')
|
||||||
|
subdir('test')
|
||||||
subdir('zsh-completion')
|
subdir('zsh-completion')
|
||||||
|
|
||||||
meson.add_install_script('tools/meson_runlevels.sh',
|
meson.add_install_script('tools/meson_runlevels.sh',
|
||||||
|
11
test/check-obsolete-functions.sh
Executable file
11
test/check-obsolete-functions.sh
Executable file
@ -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
test/check-spacing-style.sh
Normal file
18
test/check-spacing-style.sh
Normal file
@ -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
test/check-trailing-newlines.sh
Executable file
19
test/check-trailing-newlines.sh
Executable file
@ -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
test/check-trailing-whitespace.sh
Executable file
12
test/check-trailing-whitespace.sh
Executable file
@ -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
test/check-xfunc-usage.sh
Executable file
15
test/check-xfunc-usage.sh
Executable file
@ -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
test/meson.build
Normal file
26
test/meson.build
Normal file
@ -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')
|
@ -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}
|
|
@ -1,23 +1,21 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
if [ -z "${top_srcdir}" ] ; then
|
if [ -z "${BUILD_ROOT}" ] ; then
|
||||||
echo "You must set top_srcdir before sourcing this file" 1>&2
|
printf "%s\n" "You must export BUILD_ROOT before sourcing this file" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
srcdir=${srcdir:-.}
|
if [ -z "${SOURCE_ROOT}" ] ; then
|
||||||
top_builddir=${top_builddir:-${top_srcdir}}
|
printf "%s\n" "You must export SOURCE_ROOT before sourcing this file" >&2
|
||||||
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 [ ! -f ${top_srcdir}/sh/functions.sh ] ; then
|
|
||||||
echo "functions.sh not yet created !?" 1>&2
|
|
||||||
exit 1
|
|
||||||
elif ! . ${top_srcdir}/sh/functions.sh; then
|
|
||||||
echo "Sourcing functions.sh failed !?" 1>&2
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${BUILD_ROOT}/sh/functions.sh ] ; then
|
||||||
|
printf "%s\n" "functions.sh not yet created !?" >&2
|
||||||
|
exit 1
|
||||||
|
elif ! . ${BUILD_ROOT}/sh/functions.sh; then
|
||||||
|
printf "%s\n" "Sourcing functions.sh failed !?" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PATH="${BUILD_ROOT}"/src/einfo:${PATH}
|
||||||
|
@ -2,7 +2,13 @@
|
|||||||
# unit test for is_older_than code of baselayout (2008/06/19)
|
# unit test for is_older_than code of baselayout (2008/06/19)
|
||||||
# Author: Matthias Schwarzott <zzam@gentoo.org>
|
# Author: Matthias Schwarzott <zzam@gentoo.org>
|
||||||
|
|
||||||
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
|
# 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.
|
# should really be called is_newer_than as it's what it's really testing.
|
||||||
@ -37,13 +43,14 @@ do_test()
|
|||||||
is_older_than "$@"
|
is_older_than "$@"
|
||||||
r2=$?
|
r2=$?
|
||||||
|
|
||||||
[ -n "${VERBOSE}" ] && echo "reference = $r1 | OpenRC = $r2"
|
[ -n "${VERBOSE}" ] &&
|
||||||
|
printf "reference = %s | OpenRC = %s\n" "$r1" "$r2"
|
||||||
[ $r1 = $r2 ]
|
[ $r1 = $r2 ]
|
||||||
}
|
}
|
||||||
|
|
||||||
echo_cmd()
|
echo_cmd()
|
||||||
{
|
{
|
||||||
[ -n "${VERBOSE}" ] && echo "$@"
|
[ -n "${VERBOSE}" ] && printf "%s\n" "$@"
|
||||||
"$@"
|
"$@"
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@
|
|||||||
# This file may not be copied, modified, propagated, or distributed
|
# This file may not be copied, modified, propagated, or distributed
|
||||||
# except according to the terms contained in the LICENSE file.
|
# except according to the terms contained in the LICENSE file.
|
||||||
|
|
||||||
: ${top_srcdir:=..}
|
top_srcdir=${SOURCE_ROOT:-..}
|
||||||
. $top_srcdir/test/setup_env.sh
|
. $top_srcdir/test/setup_env.sh
|
||||||
|
|
||||||
ret=0
|
ret=0
|
5
test/units/meson.build
Normal file
5
test/units/meson.build
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user