aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml12
-rw-r--r--ci/common/suite.sh40
-rw-r--r--ci/common/test.sh29
-rwxr-xr-xci/run_lint.sh39
-rwxr-xr-xci/run_tests.sh42
5 files changed, 47 insertions, 115 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 41a22af538..ea3185d2a1 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -80,11 +80,11 @@ jobs:
run: ./ci/before_script.sh
- name: Build nvim
- run: ./ci/run_tests.sh build
+ run: ./ci/run_tests.sh build_nvim
- if: "!cancelled()"
- name: clint
- run: ./ci/run_lint.sh clint
+ name: clint-full
+ run: ./ci/run_lint.sh clint-full
- if: "!cancelled()"
name: lualint
@@ -99,8 +99,8 @@ jobs:
run: ./ci/run_lint.sh shlint
- if: "!cancelled()"
- name: single-includes
- run: ./ci/run_lint.sh single-includes
+ name: check-single-includes
+ run: ./ci/run_lint.sh check-single-includes
- name: Cache dependencies
run: ./ci/before_cache.sh
@@ -201,7 +201,7 @@ jobs:
run: ./ci/before_script.sh
- name: Build
- run: ./ci/run_tests.sh build
+ run: ./ci/run_tests.sh build_nvim
- if: matrix.flavor != 'tsan' && matrix.flavor != 'functionaltest-lua' && !cancelled()
name: Unittests
diff --git a/ci/common/suite.sh b/ci/common/suite.sh
index 5110e22ec2..c0c470dce1 100644
--- a/ci/common/suite.sh
+++ b/ci/common/suite.sh
@@ -1,9 +1,3 @@
-# HACK: get newline for use in strings given that "\n" and $'' do not work.
-NL="$(printf '\nE')"
-NL="${NL%E}"
-
-FAIL_SUMMARY=""
-
# Test success marker. If END_MARKER file exists, we know that all tests
# finished. If FAIL_SUMMARY_FILE exists we know that some tests failed, this
# file will contain information about failed tests. Build is considered
@@ -11,35 +5,15 @@ FAIL_SUMMARY=""
END_MARKER="$BUILD_DIR/.tests_finished"
FAIL_SUMMARY_FILE="$BUILD_DIR/.test_errors"
-enter_suite() {
- FAILED=0
- rm -f "${END_MARKER}"
- local suite_name="$1"
- export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE}/$suite_name"
-}
-
-exit_suite() {
- if test $FAILED -ne 0 ; then
- echo "Suite ${NVIM_TEST_CURRENT_SUITE} failed, summary:"
- echo "${FAIL_SUMMARY}"
- fi
- export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE%/*}"
- FAILED=0
-}
-
fail() {
local test_name="$1"
- local fail_char="$2"
- local message="$3"
+ local message="$2"
- : ${fail_char:=F}
: ${message:=Test $test_name failed}
- local full_msg="$fail_char $NVIM_TEST_CURRENT_SUITE|$test_name :: $message"
- FAIL_SUMMARY="${FAIL_SUMMARY}${NL}${full_msg}"
+ local full_msg="$test_name :: $message"
echo "${full_msg}" >> "${FAIL_SUMMARY_FILE}"
echo "Failed: $full_msg"
- FAILED=1
}
ended_successfully() {
@@ -64,13 +38,3 @@ end_tests() {
touch "${END_MARKER}"
ended_successfully
}
-
-run_suite() {
- local command="$1"
- local suite_name="$2"
-
- enter_suite "$suite_name"
- eval "$command" || fail "$suite_name"
- exit_suite
-}
-
diff --git a/ci/common/test.sh b/ci/common/test.sh
index f211a2e7aa..7db39a0e5f 100644
--- a/ci/common/test.sh
+++ b/ci/common/test.sh
@@ -51,7 +51,7 @@ check_core_dumps() {
fi
done
if test "$app" != quiet ; then
- fail 'cores' E 'Core dumps found'
+ fail 'cores' 'Core dumps found'
fi
}
@@ -72,7 +72,7 @@ check_logs() {
rm "${log}"
done
if test -n "${err}" ; then
- fail 'logs' E 'Runtime errors detected.'
+ fail 'logs' 'Runtime errors detected.'
fi
}
@@ -86,19 +86,19 @@ check_sanitizer() {
fi
}
-run_unittests() {(
+unittests() {(
ulimit -c unlimited || true
if ! build_make unittest ; then
- fail 'unittests' F 'Unit tests failed'
+ fail 'unittests' 'Unit tests failed'
fi
submit_coverage unittest
check_core_dumps "$(command -v luajit)"
)}
-run_functionaltests() {(
+functionaltests() {(
ulimit -c unlimited || true
if ! build_make ${FUNCTIONALTEST}; then
- fail 'functionaltests' F 'Functional tests failed'
+ fail 'functionaltests' 'Functional tests failed'
fi
submit_coverage functionaltest
check_sanitizer "${LOG_DIR}"
@@ -106,11 +106,11 @@ run_functionaltests() {(
check_core_dumps
)}
-run_oldtests() {(
+oldtests() {(
ulimit -c unlimited || true
if ! make oldtest; then
reset
- fail 'oldtests' F 'Legacy tests failed'
+ fail 'oldtests' 'Legacy tests failed'
fi
submit_coverage oldtest
check_sanitizer "${LOG_DIR}"
@@ -129,26 +129,25 @@ check_runtime_files() {(
# Prefer failing the build over using more robust construct because files
# with IFS are not welcome.
if ! test -e "$file" ; then
- fail "$test_name" E \
- "It appears that $file is only a part of the file name"
+ fail "$test_name" "It appears that $file is only a part of the file name"
fi
if ! test "$tst" "$INSTALL_PREFIX/share/nvim/runtime/$file" ; then
- fail "$test_name" F "$(printf "$message" "$file")"
+ fail "$test_name" "$(printf "$message" "$file")"
fi
done
)}
install_nvim() {(
if ! build_make install ; then
- fail 'install' E 'make install failed'
- exit_suite
+ fail 'install' 'make install failed'
+ exit 1
fi
"${INSTALL_PREFIX}/bin/nvim" --version
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' F 'Failed running :help'
+ fail 'help' 'Failed running :help'
fi
# Check that all runtime files were installed
@@ -169,6 +168,6 @@ install_nvim() {(
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' F "It appears that $genvimsynf does not contain $gpat."
+ fail 'funcnames' "It appears that $genvimsynf does not contain $gpat."
fi
)}
diff --git a/ci/run_lint.sh b/ci/run_lint.sh
index 2fea7a40c0..3a524b4ed6 100755
--- a/ci/run_lint.sh
+++ b/ci/run_lint.sh
@@ -8,34 +8,17 @@ CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${CI_DIR}/common/build.sh"
source "${CI_DIR}/common/suite.sh"
-if [[ "$GITHUB_ACTIONS" != "true" ]]; then
- run_suite 'make clint-full' 'clint'
- run_suite 'make lualint' 'lualint'
- run_suite 'make pylint' 'pylint'
- run_suite 'make shlint' 'shlint'
- run_suite 'make check-single-includes' 'single-includes'
+rm -f "$END_MARKER"
- end_tests
+# Run all tests if no input argument is given
+if (($# == 0)); then
+ tests=('clint-full' 'lualint' 'pylint' 'shlint' 'check-single-includes')
else
- case "$1" in
- clint)
- run_suite 'make clint-full' 'clint'
- ;;
- lualint)
- run_suite 'make lualint' 'lualint'
- ;;
- pylint)
- run_suite 'make pylint' 'pylint'
- ;;
- shlint)
- run_suite 'make shlint' 'shlint'
- ;;
- single-includes)
- run_suite 'make check-single-includes' 'single-includes'
- ;;
- *)
- :;;
- esac
-
- end_tests
+ tests=("$@")
fi
+
+for i in "${tests[@]}"; do
+ make "$i" || fail "$i"
+done
+
+end_tests
diff --git a/ci/run_tests.sh b/ci/run_tests.sh
index ae85246ab6..23460b682e 100755
--- a/ci/run_tests.sh
+++ b/ci/run_tests.sh
@@ -8,42 +8,28 @@ source "${CI_DIR}/common/build.sh"
source "${CI_DIR}/common/test.sh"
source "${CI_DIR}/common/suite.sh"
+rm -f "$END_MARKER"
-if [[ "$GITHUB_ACTIONS" != "true" ]]; then
- run_suite 'build_nvim' 'build'
+# Run all tests (with some caveats) if no input argument is given
+if (($# == 0)); then
+ tests=('build_nvim')
if test "$CLANG_SANITIZER" != "TSAN"; then
# Additional threads are only created when the builtin UI starts, which
# doesn't happen in the unit/functional tests
if test "${FUNCTIONALTEST}" != "functionaltest-lua"; then
- run_suite run_unittests unittests
+ tests+=('unittests')
fi
- run_suite run_functionaltests functionaltests
+ tests+=('functionaltests')
fi
- run_suite run_oldtests oldtests
- run_suite install_nvim install_nvim
- end_tests
+ tests+=('oldtests' 'install_nvim')
else
- case "$1" in
- build)
- run_suite 'build_nvim' 'build'
- ;;
- unittests)
- run_suite 'run_unittests' 'unittests'
- ;;
- functionaltests)
- run_suite 'run_functionaltests' 'functionaltests'
- ;;
- oldtests)
- run_suite 'run_oldtests' 'oldtests'
- ;;
- install_nvim)
- run_suite 'install_nvim' 'install_nvim'
- ;;
- *)
- :;;
- esac
-
- end_tests
+ tests=("$@")
fi
+
+for i in "${tests[@]}"; do
+ eval "$i" || fail "$i"
+done
+
+end_tests