aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDundar Göc <gocdundar@gmail.com>2022-02-14 10:17:25 +0100
committerDundar Göc <gocdundar@gmail.com>2022-02-18 11:36:30 +0100
commit8b92d71b300ef0e53b0e1b2992844dc74bd997c0 (patch)
treee6053a57d41988d2e576b5e10eb06021df9e0998
parentfaeff49cbfd190afba67e221412b7132b7ad8360 (diff)
downloadrneovim-8b92d71b300ef0e53b0e1b2992844dc74bd997c0.tar.gz
rneovim-8b92d71b300ef0e53b0e1b2992844dc74bd997c0.tar.bz2
rneovim-8b92d71b300ef0e53b0e1b2992844dc74bd997c0.zip
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.
-rw-r--r--.github/workflows/ci.yml44
-rw-r--r--ci/common/suite.sh25
-rwxr-xr-xci/run_lint.sh36
-rwxr-xr-xci/run_tests.sh47
4 files changed, 109 insertions, 43 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index aa77689d9f..f357535336 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -43,8 +43,25 @@ jobs:
- name: Build third-party
run: ./ci/before_script.sh
- - name: Run lint
- run: ./ci/script.sh
+ - if: "!cancelled()"
+ 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
if: ${{ success() }}
@@ -126,8 +143,7 @@ jobs:
brew install automake ccache perl cpanminus ninja
- name: Setup interpreter packages
- run: |
- ./ci/install.sh
+ run: ./ci/install.sh
- name: Cache dependencies
uses: actions/cache@v2
@@ -140,8 +156,24 @@ jobs:
- name: Build third-party
run: ./ci/before_script.sh
- - name: Build and test
- run: ./ci/script.sh
+ - name: Build
+ 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
if: ${{ success() }}
diff --git a/ci/common/suite.sh b/ci/common/suite.sh
index f33f8b89d1..5110e22ec2 100644
--- a/ci/common/suite.sh
+++ b/ci/common/suite.sh
@@ -11,37 +11,17 @@ FAIL_SUMMARY=""
END_MARKER="$BUILD_DIR/.tests_finished"
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() {
FAILED=0
rm -f "${END_MARKER}"
local suite_name="$1"
export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE}/$suite_name"
- ci_fold "start" "$suite_name"
}
exit_suite() {
if test $FAILED -ne 0 ; then
echo "Suite ${NVIM_TEST_CURRENT_SUITE} failed, summary:"
echo "${FAIL_SUMMARY}"
- else
- ci_fold "end" ""
fi
export NVIM_TEST_CURRENT_SUITE="${NVIM_TEST_CURRENT_SUITE%/*}"
FAILED=0
@@ -66,6 +46,11 @@ ended_successfully() {
if test -f "${FAIL_SUMMARY_FILE}" ; then
echo 'Test failed, complete summary:'
cat "${FAIL_SUMMARY_FILE}"
+
+ if [[ "$GITHUB_ACTIONS" == "true" ]]; then
+ rm -f "$FAIL_SUMMARY_FILE"
+ fi
+
return 1
fi
if ! test -f "${END_MARKER}" ; then
diff --git a/ci/run_lint.sh b/ci/run_lint.sh
index 607ffa233a..2fea7a40c0 100755
--- a/ci/run_lint.sh
+++ b/ci/run_lint.sh
@@ -8,10 +8,34 @@ CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${CI_DIR}/common/build.sh"
source "${CI_DIR}/common/suite.sh"
-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'
+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'
-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
diff --git a/ci/run_tests.sh b/ci/run_tests.sh
index 1baeb090a8..ae85246ab6 100755
--- a/ci/run_tests.sh
+++ b/ci/run_tests.sh
@@ -8,17 +8,42 @@ source "${CI_DIR}/common/build.sh"
source "${CI_DIR}/common/test.sh"
source "${CI_DIR}/common/suite.sh"
-run_suite 'build_nvim' 'build'
-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
+if [[ "$GITHUB_ACTIONS" != "true" ]]; then
+ run_suite 'build_nvim' 'build'
+
+ 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
+ fi
+ run_suite run_functionaltests functionaltests
fi
- run_suite run_functionaltests functionaltests
-fi
-run_suite run_oldtests oldtests
-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