mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
eclass/lua-utils.eclass: Add support for test-runners
During migration of dev-lua/* ebuilds to slotted lua, I noticed, that many ebuilds use 'dev-lua/busted' for running tests. This change adds support for running a test-runner, at first only 'busted' for now. Also a non-color and plaintext output will be used for the test-runner 'busted'. This is basically a copy of the test-runner section, written by mgorny, which already exists in 'distutils-r1', but modified and adapted to lua. In order to use this feature, you can define 'lua_enable_tests busted' to setup everything needed for tests and run them. By default, 'dev-lua/busted' assumes, that tests are in the 'spec' folder. If this is not the case, you can add a second argument to specify a different folder. For example, if the folder is called 'foo', you can just run 'lua_enable_tests busted foo'. More test-runners can be added in future, if needed. Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
This commit is contained in:
@@ -344,6 +344,76 @@ _lua_export() {
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: lua_enable_tests
|
||||
# @USAGE: <test-runner> <test-directory>
|
||||
# @DESCRIPTION:
|
||||
# Set up IUSE, RESTRICT, BDEPEND and src_test() for running tests
|
||||
# with the specified test runner. Also copies the current value
|
||||
# of RDEPEND to test?-BDEPEND. The test-runner argument must be one of:
|
||||
#
|
||||
# - busted: dev-lua/busted
|
||||
#
|
||||
# Additionally, a second argument can be passed after <test-runner>,
|
||||
# so <test-runner> will use that directory to search for tests.
|
||||
# If not passed, a default directory of <test-runner> will be used.
|
||||
#
|
||||
# - busted: spec
|
||||
#
|
||||
# This function is meant as a helper for common use cases, and it only
|
||||
# takes care of basic setup. You still need to list additional test
|
||||
# dependencies manually. If you have uncommon use case, you should
|
||||
# not use it and instead enable tests manually.
|
||||
#
|
||||
# This function must be called in global scope, after RDEPEND has been
|
||||
# declared. Take care not to overwrite the variables set by it.
|
||||
lua_enable_tests() {
|
||||
debug-print-function ${FUNCNAME} "${@}"
|
||||
|
||||
[[ ${#} -ge 1 ]] || die "${FUNCNAME} takes at least one argument: test-runner (test-directory)"
|
||||
local test_directory
|
||||
local test_pkg
|
||||
case ${1} in
|
||||
busted)
|
||||
test_directory="${2:-spec}"
|
||||
test_pkg="dev-lua/busted"
|
||||
if [[ ! ${_LUA_SINGLE_R0} ]]; then
|
||||
eval "lua_src_test() {
|
||||
busted --lua=\"\${ELUA}\" --output=\"plainTerminal\" \"${test_directory}\" || die \"Tests fail with \${ELUA}\"
|
||||
}"
|
||||
src_test() {
|
||||
lua_foreach_impl lua_src_test
|
||||
}
|
||||
else
|
||||
eval "src_test() {
|
||||
busted --lua=\"\${ELUA}\" --output=\"plainTerminal\" \"${test_directory}\" || die \"Tests fail with \${ELUA}\"
|
||||
}"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
die "${FUNCNAME}: unsupported argument: ${1}"
|
||||
esac
|
||||
|
||||
local test_deps=${RDEPEND}
|
||||
if [[ -n ${test_pkg} ]]; then
|
||||
if [[ ! ${_LUA_SINGLE_R0} ]]; then
|
||||
test_deps+=" ${test_pkg}[${LUA_USEDEP}]"
|
||||
else
|
||||
test_deps+=" $(lua_gen_cond_dep "
|
||||
${test_pkg}[\${LUA_USEDEP}]
|
||||
")"
|
||||
fi
|
||||
fi
|
||||
if [[ -n ${test_deps} ]]; then
|
||||
IUSE+=" test"
|
||||
RESTRICT+=" !test? ( test )"
|
||||
BDEPEND+=" test? ( ${test_deps} )"
|
||||
fi
|
||||
|
||||
# we need to ensure successful return in case we're called last,
|
||||
# otherwise Portage may wrongly assume sourcing failed
|
||||
return 0
|
||||
}
|
||||
|
||||
# @FUNCTION: lua_get_CFLAGS
|
||||
# @USAGE: [<impl>]
|
||||
# @DESCRIPTION:
|
||||
|
||||
Reference in New Issue
Block a user