diff options
Diffstat (limited to 'ci')
| -rwxr-xr-x | ci/before_script.sh | 32 | ||||
| -rwxr-xr-x | ci/run_tests.sh | 127 |
2 files changed, 36 insertions, 123 deletions
diff --git a/ci/before_script.sh b/ci/before_script.sh deleted file mode 100755 index 9797d3ae30..0000000000 --- a/ci/before_script.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -o pipefail - -# Test some of the configuration variables. -if [[ -n "${GCOV}" ]] && [[ ! $(type -P "${GCOV}") ]]; then - echo "\$GCOV: '${GCOV}' is not executable." - exit 1 -fi - -if test "${FUNCTIONALTEST}" = "functionaltest-lua" ; then - DEPS_CMAKE_FLAGS="${DEPS_CMAKE_FLAGS} -D USE_BUNDLED_LUA=ON" -fi - -mkdir -p "${DEPS_BUILD_DIR}" -cd "${DEPS_BUILD_DIR}" -echo "Configuring with '${DEPS_CMAKE_FLAGS}'." -# shellcheck disable=SC2086 -cmake -G Ninja ${DEPS_CMAKE_FLAGS} "${CI_BUILD_DIR}/cmake.deps/" - -ninja || exit 1 - -cd "${CI_BUILD_DIR}" - -# Install cluacov for Lua coverage. -if [[ "$USE_LUACOV" == 1 ]]; then - "${DEPS_BUILD_DIR}/usr/bin/luarocks" install cluacov -fi - -rm -rf "${LOG_DIR}" -mkdir -p "${LOG_DIR}" diff --git a/ci/run_tests.sh b/ci/run_tests.sh index 22ed4a4332..ddd364ae86 100755 --- a/ci/run_tests.sh +++ b/ci/run_tests.sh @@ -3,26 +3,15 @@ set -e set -o pipefail -fail() { - local test_name="$1" - local message="$2" - - : "${message:=Test $test_name failed}" - - local full_msg="$test_name :: $message" - echo "Failed: $full_msg" - exit 1 -} - print_core() { local app="$1" local core="$2" - if test "$app" = quiet ; then + if test "$app" = quiet; then echo "Found core $core" return 0 fi echo "======= Core file $core =======" - if test "${CI_OS_NAME}" = osx ; then + if test "${CI_OS_NAME}" = osx; then lldb -Q -o "bt all" -f "${app}" -c "${core}" else gdb -n -batch -ex 'thread apply all bt full' "${app}" -c "${core}" @@ -31,13 +20,13 @@ print_core() { check_core_dumps() { local del= - if test "$1" = "--delete" ; then + if test "$1" = "--delete"; then del=1 shift fi local app="${1:-${BUILD_DIR}/bin/nvim}" local cores - if test "${CI_OS_NAME}" = osx ; then + if test "${CI_OS_NAME}" = osx; then cores="$(find /cores/ -type f -print)" local _sudo='sudo' else @@ -45,20 +34,21 @@ check_core_dumps() { local _sudo= fi - if test -z "${cores}" ; then + if test -z "${cores}"; then return fi local core for core in $cores; do - if test "$del" = "1" ; then + if test "$del" = "1"; then print_core "$app" "$core" >&2 "$_sudo" rm "$core" else print_core "$app" "$core" fi done - if test "$app" != quiet ; then - fail 'cores' 'Core dumps found' + if test "$app" != quiet; then + echo 'Core dumps found' + exit 1 fi } @@ -80,8 +70,9 @@ check_logs() { err=1 rm "${log}" done - if test -n "${err}" ; then - fail 'logs' 'Runtime errors detected.' + if test -n "${err}"; then + echo 'Runtime errors detected.' + exit 1 fi } @@ -97,17 +88,13 @@ check_sanitizer() { unittests() {( ulimit -c unlimited || true - if ! ninja -C "${BUILD_DIR}" unittest; then - fail 'unittests' 'Unit tests failed' - fi + ninja -C "${BUILD_DIR}" unittest || exit check_core_dumps "$(command -v luajit)" )} functionaltests() {( ulimit -c unlimited || true - if ! ninja -C "${BUILD_DIR}" "${FUNCTIONALTEST}"; then - fail 'functionaltests' 'Functional tests failed' - fi + ninja -C "${BUILD_DIR}" "${FUNCTIONALTEST}" || exit check_sanitizer "${LOG_DIR}" valgrind_check "${LOG_DIR}" check_core_dumps @@ -117,7 +104,7 @@ oldtests() {( ulimit -c unlimited || true if ! make oldtest; then reset - fail 'oldtests' 'Legacy tests failed' + exit 1 fi check_sanitizer "${LOG_DIR}" valgrind_check "${LOG_DIR}" @@ -125,46 +112,41 @@ oldtests() {( )} check_runtime_files() {( - local test_name="$1" ; shift - local message="$1" ; shift - local tst="$1" ; shift + local message="$1"; shift + local tst="$1"; shift - cd runtime || exit - for file in $(git ls-files "$@") ; do + for file in $(git -C runtime ls-files "$@"); do # Check that test is not trying to work with files with spaces/etc # Prefer failing the build over using more robust construct because files # with IFS are not welcome. - if ! test -e "$file" ; then - fail "$test_name" "It appears that $file is only a part of the file name" + if ! test -e "$file"; then + echo "It appears that $file is only a part of the file name" + exit 1 fi - if ! test "$tst" "$INSTALL_PREFIX/share/nvim/runtime/$file" ; then - fail "$test_name" "$(printf "%s%s" "$message" "$file")" + if ! test "$tst" "$INSTALL_PREFIX/share/nvim/runtime/$file"; then + printf "%s%s" "$message" "$file" + exit 1 fi done )} -install_nvim() {( - if ! ninja -C "${BUILD_DIR}" install; then - fail 'install' 'make install failed' - fi - +installtests() {( "${INSTALL_PREFIX}/bin/nvim" --version - if ! "${INSTALL_PREFIX}/bin/nvim" -u NONE -e -c ':help' -c ':qall' ; then + if ! "${INSTALL_PREFIX}/bin/nvim" -u NONE -e -c ':help' -c ':qall'; then echo "Running ':help' in the installed nvim failed." echo "Maybe the helptags have not been generated properly." - fail 'help' 'Failed running :help' + echo 'Failed running :help' + exit 1 fi # Check that all runtime files were installed check_runtime_files \ - 'runtime-install' \ 'It appears that %s is not installed.' \ -e \ '*.vim' '*.ps' '*.dict' '*.py' '*.tutor' # Check that some runtime files are installed and are executables check_runtime_files \ - 'not-exe' \ 'It appears that %s is not installed or is not executable.' \ -x \ '*.awk' '*.sh' '*.bat' @@ -172,60 +154,23 @@ install_nvim() {( # Check that generated syntax file has function names, #5060. local genvimsynf=syntax/vim/generated.vim local gpat='syn keyword vimFuncName .*eval' - if ! grep -q "$gpat" "${INSTALL_PREFIX}/share/nvim/runtime/$genvimsynf" ; then - fail 'funcnames' "It appears that $genvimsynf does not contain $gpat." + if ! grep -q "$gpat" "${INSTALL_PREFIX}/share/nvim/runtime/$genvimsynf"; then + echo "It appears that $genvimsynf does not contain $gpat." + exit 1 fi )} -build_nvim() { +prepare_sanitizer() { check_core_dumps --delete quiet - - if test -n "${CLANG_SANITIZER}" ; then - CMAKE_FLAGS="${CMAKE_FLAGS} -D CLANG_${CLANG_SANITIZER}=ON" - fi - - mkdir -p "${BUILD_DIR}" - cd "${BUILD_DIR}" - echo "Configuring with '${CMAKE_FLAGS} $*'." - # shellcheck disable=SC2086 - cmake -G Ninja ${CMAKE_FLAGS} "$@" "${CI_BUILD_DIR}" - - echo "Building nvim." - ninja nvim || exit 1 - # Invoke nvim to trigger *San early. - if ! (bin/nvim --version && bin/nvim -u NONE -e -cq | cat -vet) ; then + if ! ("${BUILD_DIR}"/bin/nvim --version && "${BUILD_DIR}"/bin/nvim -u NONE -e -cq | cat -vet); then check_sanitizer "${LOG_DIR}" exit 1 fi check_sanitizer "${LOG_DIR}" - - cd "${CI_BUILD_DIR}" } -# Run all tests (with some caveats) if no input argument is given -if (($# == 0)); then - tests=('build_nvim') - - # Additional threads aren't created in the unit/old tests - if test "$CLANG_SANITIZER" != "TSAN"; then - if test "${FUNCTIONALTEST}" != "functionaltest-lua"; then - tests+=('unittests') - fi - tests+=('oldtests') - fi - - tests+=('functionaltests' 'install_nvim') -else - tests=("$@") -fi - -for i in "${tests[@]}"; do - eval "$i" || exit -done +rm -rf "${LOG_DIR}" +mkdir -p "${LOG_DIR}" -if [[ -s "${GCOV_ERROR_FILE}" ]]; then - echo '=== Unexpected gcov errors: ===' - cat "${GCOV_ERROR_FILE}" - exit 1 -fi +eval "$*" || exit |