mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-13 07:56:57 +02:00
eclass/elisp-common: Sync with Gentoo
It's from Gentoo commit d8ac4fe35a9fb94bccf8fe3225ab3eeeabf6ee06.
This commit is contained in:
parent
f0f5a01de8
commit
bed8166ba6
@ -10,6 +10,7 @@
|
|||||||
# Mamoru Komachi <usata@gentoo.org>
|
# Mamoru Komachi <usata@gentoo.org>
|
||||||
# Christian Faulhammer <fauli@gentoo.org>
|
# Christian Faulhammer <fauli@gentoo.org>
|
||||||
# Ulrich Müller <ulm@gentoo.org>
|
# Ulrich Müller <ulm@gentoo.org>
|
||||||
|
# Maciej Barć <xgqt@gentoo.org>
|
||||||
# @SUPPORTED_EAPIS: 6 7 8
|
# @SUPPORTED_EAPIS: 6 7 8
|
||||||
# @BLURB: Emacs-related installation utilities
|
# @BLURB: Emacs-related installation utilities
|
||||||
# @DESCRIPTION:
|
# @DESCRIPTION:
|
||||||
@ -337,6 +338,205 @@ elisp-make-autoload-file() {
|
|||||||
eend $? "elisp-make-autoload-file: batch-update-autoloads failed" || die
|
eend $? "elisp-make-autoload-file: batch-update-autoloads failed" || die
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# @FUNCTION: elisp-test-buttercup
|
||||||
|
# @USAGE: [test-subdirectory] [test-runner-opts] ...
|
||||||
|
# @DESCRIPTION:
|
||||||
|
# Run ELisp package tests using the "buttercup" test runner.
|
||||||
|
#
|
||||||
|
# The option "test-subdirectory" may be given any number of times, it should
|
||||||
|
# be given as though it was passed to Emacs or the test tool, not as a string.
|
||||||
|
#
|
||||||
|
# The options "test-subdirectory" and "test-runner-opts" are optional,
|
||||||
|
# but if "test-runner-opts" needs to be provided also "test-subdirectory" has
|
||||||
|
# to be specified.
|
||||||
|
|
||||||
|
elisp-test-buttercup() {
|
||||||
|
debug-print-function ${FUNCNAME} "$@"
|
||||||
|
|
||||||
|
local test_dir="${1:-$(pwd)}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
local -a myopts=(
|
||||||
|
${BYTECOMPFLAGS}
|
||||||
|
-L "${test_dir}"
|
||||||
|
--traceback full
|
||||||
|
"$@"
|
||||||
|
)
|
||||||
|
ebegin "Running buttercup tests"
|
||||||
|
buttercup "${myopts[@]}" "${test_dir}"
|
||||||
|
eend $? "${FUNCNAME}: tests failed" || die
|
||||||
|
}
|
||||||
|
|
||||||
|
# @FUNCTION: elisp-test-ert-runner
|
||||||
|
# @USAGE: [test-subdirectory] [test-runner-opts] ...
|
||||||
|
# @DESCRIPTION:
|
||||||
|
# Run ELisp package tests using the "ert-runner" test runner.
|
||||||
|
#
|
||||||
|
# The option "test-subdirectory" may be given any number of times, it should
|
||||||
|
# be given as though it was passed to Emacs or the test tool, not as a string.
|
||||||
|
#
|
||||||
|
# The options "test-subdirectory" and "test-runner-opts" are optional,
|
||||||
|
# but if "test-runner-opts" needs to be provided also "test-subdirectory" has
|
||||||
|
# to be specified.
|
||||||
|
|
||||||
|
elisp-test-ert-runner() {
|
||||||
|
debug-print-function ${FUNCNAME} "$@"
|
||||||
|
|
||||||
|
local test_dir="${1:-$(pwd)}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
local -a myopts=(
|
||||||
|
${BYTECOMPFLAGS}
|
||||||
|
--reporter ert+duration
|
||||||
|
--script
|
||||||
|
-L "${test_dir}"
|
||||||
|
"$@"
|
||||||
|
)
|
||||||
|
ebegin "Running ert-runner tests"
|
||||||
|
ert-runner "${myopts[@]}" "${test_dir}"
|
||||||
|
eend $? "${FUNCNAME}: tests failed" || die
|
||||||
|
}
|
||||||
|
|
||||||
|
# @FUNCTION: elisp-test-ert
|
||||||
|
# @USAGE: [test-subdirectory] [test-runner-opts] ...
|
||||||
|
# @DESCRIPTION:
|
||||||
|
# Run ELisp package tests using "ert", the Emacs's built-in test runner.
|
||||||
|
#
|
||||||
|
# The option "test-subdirectory" may be given any number of times, it should
|
||||||
|
# be given as though it was passed to Emacs or the test tool, not as a string.
|
||||||
|
#
|
||||||
|
# The options "test-subdirectory" and "test-runner-opts" are optional,
|
||||||
|
# but if "test-runner-opts" needs to be provided also "test-subdirectory" has
|
||||||
|
# to be specified.
|
||||||
|
|
||||||
|
elisp-test-ert() {
|
||||||
|
debug-print-function ${FUNCNAME} "$@"
|
||||||
|
|
||||||
|
local test_dir="${1:-$(pwd)}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
local -a extra_load=()
|
||||||
|
local extra_load_file
|
||||||
|
for extra_load_file in "${test_dir}"/?*-test.el; do
|
||||||
|
if [[ -f "${extra_load_file}" ]]; then
|
||||||
|
extra_load+=( -l "${extra_load_file}" )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
local -a myopts=(
|
||||||
|
${EMACSFLAGS}
|
||||||
|
${BYTECOMPFLAGS}
|
||||||
|
-L "${test_dir}"
|
||||||
|
"${extra_load[@]}"
|
||||||
|
"$@"
|
||||||
|
-f ert-run-tests-batch-and-exit
|
||||||
|
)
|
||||||
|
ebegin "Running ert tests"
|
||||||
|
${EMACS} "${myopts[@]}"
|
||||||
|
eend $? "${FUNCNAME}: tests failed" || die
|
||||||
|
}
|
||||||
|
|
||||||
|
# @FUNCTION: elisp-enable-tests
|
||||||
|
# @USAGE: [--optional] <test-runner> [test-runner-options] ...
|
||||||
|
# @DESCRIPTION:
|
||||||
|
# Set up IUSE, RESTRICT, BDEPEND and test runner function for running tests
|
||||||
|
# with the specified test runner.
|
||||||
|
#
|
||||||
|
# The test-runner argument must be one of:
|
||||||
|
#
|
||||||
|
# - buttercup: for "buttercup" provided via "app-emacs/buttercup"
|
||||||
|
#
|
||||||
|
# - ert-runner: for "ert-runner" provided via "app-emacs/ert-runner"
|
||||||
|
#
|
||||||
|
# - ert: for built-in GNU Emacs test utility
|
||||||
|
#
|
||||||
|
# If the "--optional" flag is passed (before specifying the test runner),
|
||||||
|
# then it is assumed that the ELisp package is a part of some project that
|
||||||
|
# optionally enables GNU Emacs support.
|
||||||
|
# This will correctly set up the test and Emacs dependencies.
|
||||||
|
#
|
||||||
|
# Notice that the fist option passed to the "test-runner" is the directory
|
||||||
|
# and the rest are miscellaneous options applicable to that given runner.
|
||||||
|
#
|
||||||
|
# This function has to be called post inherit, specifically after "IUSE",
|
||||||
|
# "RESTRICT" and "BDEPEND" variables are assigned.
|
||||||
|
# It is advised to place this call right before (re)defining a given ebuild's
|
||||||
|
# phases.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# @CODE
|
||||||
|
# inherit elisp-common
|
||||||
|
#
|
||||||
|
# ...
|
||||||
|
#
|
||||||
|
# elisp-enable-tests --optional ert-runner "${S}"/elisp -t "!org"
|
||||||
|
#
|
||||||
|
# src_test() {
|
||||||
|
# emake -C tests test
|
||||||
|
# elisp-test
|
||||||
|
# }
|
||||||
|
# @CODE
|
||||||
|
|
||||||
|
elisp-enable-tests() {
|
||||||
|
debug-print-function ${FUNCNAME} "$@"
|
||||||
|
|
||||||
|
local optional
|
||||||
|
if [[ ${1} = "--optional" ]] ; then
|
||||||
|
optional=YES
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
local test_pkg
|
||||||
|
local test_runner=${1}
|
||||||
|
shift
|
||||||
|
|
||||||
|
_ELISP_TEST_OPTS=( "$@" )
|
||||||
|
|
||||||
|
case ${test_runner} in
|
||||||
|
buttercup )
|
||||||
|
test_pkg="app-emacs/buttercup"
|
||||||
|
_ELISP_TEST_FUNCTION=elisp-test-buttercup
|
||||||
|
;;
|
||||||
|
ert-runner )
|
||||||
|
test_pkg="app-emacs/ert-runner"
|
||||||
|
_ELISP_TEST_FUNCTION=elisp-test-ert-runner
|
||||||
|
;;
|
||||||
|
ert )
|
||||||
|
_ELISP_TEST_FUNCTION=elisp-test-ert
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
die "${FUNCNAME}: unknown test runner, given ${test_runner}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ ${test_pkg} ]]; then
|
||||||
|
IUSE+=" test "
|
||||||
|
RESTRICT+=" !test? ( test ) "
|
||||||
|
if [[ ${optional} ]]; then
|
||||||
|
IUSE+=" emacs "
|
||||||
|
BDEPEND+=" test? ( emacs? ( ${test_pkg} ) ) "
|
||||||
|
else
|
||||||
|
BDEPEND+=" test? ( ${test_pkg} ) "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# @FUNCTION: elisp-test
|
||||||
|
# @DESCRIPTION:
|
||||||
|
# Test the package using a ELisp test runner.
|
||||||
|
#
|
||||||
|
# If called without executing "elisp-enable-tests" beforehand, then
|
||||||
|
# does nothing, otherwise a test runner is called with given
|
||||||
|
# "test-runner-options".
|
||||||
|
|
||||||
|
elisp-test() {
|
||||||
|
if [[ ${_ELISP_TEST_FUNCTION} ]]; then
|
||||||
|
${_ELISP_TEST_FUNCTION} "${_ELISP_TEST_OPTS[@]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# @FUNCTION: elisp-install
|
# @FUNCTION: elisp-install
|
||||||
# @USAGE: <subdirectory> <list of files>
|
# @USAGE: <subdirectory> <list of files>
|
||||||
# @DESCRIPTION:
|
# @DESCRIPTION:
|
||||||
|
Loading…
Reference in New Issue
Block a user