mirror of
https://github.com/OpenRC/openrc.git
synced 2024-11-23 01:43:37 +08:00
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/
|
||||
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
.github/workflows/ci-ubuntu.yml
vendored
6
.github/workflows/ci-ubuntu.yml
vendored
@ -16,6 +16,9 @@ jobs:
|
||||
- run: ninja -C builddir
|
||||
env:
|
||||
CC: gcc
|
||||
- run: ninja test --verbose -C builddir
|
||||
env:
|
||||
CC: gcc
|
||||
|
||||
|
||||
clang-glibc:
|
||||
@ -30,3 +33,6 @@ jobs:
|
||||
- run: ninja -C builddir
|
||||
env:
|
||||
CC: clang
|
||||
- run: ninja test --verbose -C builddir
|
||||
env:
|
||||
CC: clang
|
||||
|
@ -18,4 +18,4 @@ set -x
|
||||
|
||||
meson build
|
||||
meson compile -C build
|
||||
# gmake test
|
||||
meson test --verbose -C build
|
||||
|
@ -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')
|
||||
@ -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',
|
||||
|
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
|
||||
|
||||
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 [ ! -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
|
||||
if [ -z "${SOURCE_ROOT}" ] ; then
|
||||
printf "%s\n" "You must export SOURCE_ROOT before sourcing this file" >&2
|
||||
exit 1
|
||||
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)
|
||||
# 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
|
||||
# should really be called is_newer_than as it's what it's really testing.
|
||||
@ -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" "$@"
|
||||
"$@"
|
||||
}
|
||||
|
@ -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
|
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