ci: run each test suite in a separate github step

This should help combat some of the lagginess when looking at the CI
logs in the browser.
This commit is contained in:
Dundar Göc
2022-02-14 10:17:25 +01:00
parent faeff49cbf
commit 8b92d71b30
4 changed files with 109 additions and 43 deletions

View File

@@ -43,8 +43,25 @@ jobs:
- name: Build third-party - name: Build third-party
run: ./ci/before_script.sh run: ./ci/before_script.sh
- name: Run lint - if: "!cancelled()"
run: ./ci/script.sh name: clint
run: ./ci/run_lint.sh clint
- if: "!cancelled()"
name: lualint
run: ./ci/run_lint.sh lualint
- if: "!cancelled()"
name: pylint
run: ./ci/run_lint.sh pylint
- if: "!cancelled()"
name: shlint
run: ./ci/run_lint.sh shlint
- if: "!cancelled()"
name: single-includes
run: ./ci/run_lint.sh single-includes
- name: Cache dependencies - name: Cache dependencies
if: ${{ success() }} if: ${{ success() }}
@@ -126,8 +143,7 @@ jobs:
brew install automake ccache perl cpanminus ninja brew install automake ccache perl cpanminus ninja
- name: Setup interpreter packages - name: Setup interpreter packages
run: | run: ./ci/install.sh
./ci/install.sh
- name: Cache dependencies - name: Cache dependencies
uses: actions/cache@v2 uses: actions/cache@v2
@@ -140,8 +156,24 @@ jobs:
- name: Build third-party - name: Build third-party
run: ./ci/before_script.sh run: ./ci/before_script.sh
- name: Build and test - name: Build
run: ./ci/script.sh run: ./ci/run_tests.sh build
- if: matrix.flavor != 'tsan' && matrix.flavor != 'functionaltest-lua' && !cancelled()
name: Unittests
run: ./ci/run_tests.sh unittests
- if: matrix.flavor != 'tsan' && !cancelled()
name: Functionaltests
run: ./ci/run_tests.sh functionaltests
- if: "!cancelled()"
name: Oldtests
run: ./ci/run_tests.sh oldtests
- if: "!cancelled()"
name: Install nvim
run: ./ci/run_tests.sh install_nvim
- name: Cache dependencies - name: Cache dependencies
if: ${{ success() }} if: ${{ success() }}

View File

@@ -11,37 +11,17 @@ FAIL_SUMMARY=""
END_MARKER="$BUILD_DIR/.tests_finished" END_MARKER="$BUILD_DIR/.tests_finished"
FAIL_SUMMARY_FILE="$BUILD_DIR/.test_errors" FAIL_SUMMARY_FILE="$BUILD_DIR/.test_errors"
ci_fold() {
if test "$GITHUB_ACTIONS" = "true"; then
local action="$1"
local name="$2"
case "$action" in
start)
echo "::group::${name}"
;;
end)
echo "::endgroup::"
;;
*)
:;;
esac
fi
}
enter_suite() { enter_suite() {
FAILED=0 FAILED=0
rm -f "${END_MARKER}" rm -f "${END_MARKER}"
local suite_name="$1" local suite_name="$1"
export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE}/$suite_name" export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE}/$suite_name"
ci_fold "start" "$suite_name"
} }
exit_suite() { exit_suite() {
if test $FAILED -ne 0 ; then if test $FAILED -ne 0 ; then
echo "Suite ${NVIM_TEST_CURRENT_SUITE} failed, summary:" echo "Suite ${NVIM_TEST_CURRENT_SUITE} failed, summary:"
echo "${FAIL_SUMMARY}" echo "${FAIL_SUMMARY}"
else
ci_fold "end" ""
fi fi
export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE%/*}" export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE%/*}"
FAILED=0 FAILED=0
@@ -66,6 +46,11 @@ ended_successfully() {
if test -f "${FAIL_SUMMARY_FILE}" ; then if test -f "${FAIL_SUMMARY_FILE}" ; then
echo 'Test failed, complete summary:' echo 'Test failed, complete summary:'
cat "${FAIL_SUMMARY_FILE}" cat "${FAIL_SUMMARY_FILE}"
if [[ "$GITHUB_ACTIONS" == "true" ]]; then
rm -f "$FAIL_SUMMARY_FILE"
fi
return 1 return 1
fi fi
if ! test -f "${END_MARKER}" ; then if ! test -f "${END_MARKER}" ; then

View File

@@ -8,10 +8,34 @@ CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${CI_DIR}/common/build.sh" source "${CI_DIR}/common/build.sh"
source "${CI_DIR}/common/suite.sh" source "${CI_DIR}/common/suite.sh"
run_suite 'make clint-full' 'clint' if [[ "$GITHUB_ACTIONS" != "true" ]]; then
run_suite 'make lualint' 'lualint' run_suite 'make clint-full' 'clint'
run_suite 'make pylint' 'pylint' run_suite 'make lualint' 'lualint'
run_suite 'make shlint' 'shlint' run_suite 'make pylint' 'pylint'
run_suite 'make check-single-includes' 'single-includes' run_suite 'make shlint' 'shlint'
run_suite 'make check-single-includes' 'single-includes'
end_tests end_tests
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
fi

View File

@@ -8,17 +8,42 @@ source "${CI_DIR}/common/build.sh"
source "${CI_DIR}/common/test.sh" source "${CI_DIR}/common/test.sh"
source "${CI_DIR}/common/suite.sh" source "${CI_DIR}/common/suite.sh"
run_suite 'build_nvim' 'build'
if test "$CLANG_SANITIZER" != "TSAN"; then if [[ "$GITHUB_ACTIONS" != "true" ]]; then
# Additional threads are only created when the builtin UI starts, which run_suite 'build_nvim' 'build'
# doesn't happen in the unit/functional tests
if test "${FUNCTIONALTEST}" != "functionaltest-lua"; then if test "$CLANG_SANITIZER" != "TSAN"; then
run_suite run_unittests unittests # 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
fi
run_suite run_functionaltests functionaltests
fi fi
run_suite run_functionaltests functionaltests run_suite run_oldtests oldtests
fi run_suite install_nvim install_nvim
run_suite run_oldtests oldtests
run_suite install_nvim install_nvim
end_tests end_tests
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
fi