diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2021-01-22 20:28:19 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2021-01-22 20:28:19 +0000 |
commit | abaa75b10f899ada8dd05b23cc03205064394bc6 (patch) | |
tree | eca3dd248b73b92013cba00a0fcc1edf2696e19a /eclass/lua-utils.eclass | |
parent | 24fd814c326e282c4321965c31f341dad77e270d (diff) |
gentoo resync : 22.01.2021
Diffstat (limited to 'eclass/lua-utils.eclass')
-rw-r--r-- | eclass/lua-utils.eclass | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/eclass/lua-utils.eclass b/eclass/lua-utils.eclass index 100be14cb08a..0589318ef519 100644 --- a/eclass/lua-utils.eclass +++ b/eclass/lua-utils.eclass @@ -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: |