aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml104
-rwxr-xr-xci/install.sh20
-rwxr-xr-xci/run_tests.sh107
3 files changed, 90 insertions, 141 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 082d0babb3..3135bba571 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -208,8 +208,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- - name: Setup common environment variables
- run: ./.github/workflows/env.sh ${{ matrix.flavor }}
+ - name: Set up environment
+ run: |
+ ./.github/workflows/env.sh ${{ matrix.flavor }}
+ ulimit -c unlimited
- name: Create log dir
run: mkdir -p "${LOG_DIR}"
@@ -225,7 +227,22 @@ jobs:
brew install automake cpanminus ninja
- name: Setup interpreter packages
- run: ./ci/install.sh
+ run: |
+ # Use default CC to avoid compilation problems when installing Python modules.
+ echo "Install neovim module for Python."
+ CC=cc python3 -m pip -q install --user --upgrade pynvim
+
+ echo "Install neovim RubyGem."
+ gem install --no-document --bindir "$BIN_DIR" --user-install --pre neovim
+
+ echo "Install neovim npm package"
+ npm install -g neovim
+ npm link neovim
+
+ if [[ $CI_OS_NAME != osx ]]; then
+ sudo cpanm -n Neovim::Ext || cat "$HOME/.cpanm/build.log"
+ perl -W -e 'use Neovim::Ext; print $Neovim::Ext::VERSION'
+ fi
- uses: ./.github/actions/cache
@@ -251,18 +268,23 @@ jobs:
run: echo "status=${{ job.status }}" >> $GITHUB_OUTPUT
- if: matrix.flavor != 'tsan' && matrix.flavor != 'functionaltest-lua' && (success() || failure() && steps.abort_job.outputs.status == 'success')
- name: Unittests
+ name: Unittest
timeout-minutes: 5
- run: ./ci/run_tests.sh unittests
+ run: cmake --build build --target unittest
- - if: success() || failure() && steps.abort_job.outputs.status == 'success'
- name: Functionaltests
+ - if: matrix.flavor != 'functionaltest-lua' && (success() || failure() && steps.abort_job.outputs.status == 'success')
+ name: Functionaltest
+ timeout-minutes: 15
+ run: cmake --build build --target functionaltest
+
+ - if: matrix.flavor == 'functionaltest-lua' && (success() || failure() && steps.abort_job.outputs.status == 'success')
+ name: Functionaltest with PUC Lua
timeout-minutes: 15
- run: ./ci/run_tests.sh functionaltests
+ run: cmake --build build --target functionaltest-lua
- if: matrix.flavor != 'tsan' && (success() || failure() && steps.abort_job.outputs.status == 'success')
- name: Oldtests
- run: ./ci/run_tests.sh oldtests
+ name: Oldtest
+ run: make oldtest
- if: success() || failure() && steps.abort_job.outputs.status == 'success'
name: Install
@@ -270,12 +292,66 @@ jobs:
- if: success() || failure() && steps.abort_job.outputs.status == 'success'
name: Installtests
- run: ./ci/run_tests.sh installtests
+ run: |
+ "${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."
+ echo 'Failed running :help'
+ exit 1
+ fi
+
+ # Check that all runtime files were installed
+ for file in $(git -C runtime ls-files '*.vim' '*.ps' '*.dict' '*.py' '*.tutor'); do
+ if ! test -e "$INSTALL_PREFIX/share/nvim/runtime/$file"; then
+ printf "%s%s" 'It appears that %s is not installed.' "$file"
+ exit 1
+ fi
+ done
+
+ # Check that some runtime files are installed and are executables
+ for file in $(git -C runtime ls-files '*.awk' '*.sh' '*.bat'); do
+ if ! test -x "$INSTALL_PREFIX/share/nvim/runtime/$file"; then
+ printf "%s%s" 'It appears that %s is not installed or is not executable.' "$file"
+ exit 1
+ fi
+ done
+
+ # Check that generated syntax file has function names, #5060.
+ genvimsynf=syntax/vim/generated.vim
+ gpat='syn keyword vimFuncName .*eval'
+ if ! grep -q "$gpat" "${INSTALL_PREFIX}/share/nvim/runtime/$genvimsynf"; then
+ echo "It appears that $genvimsynf does not contain $gpat."
+ exit 1
+ fi
- if: success() || failure() && steps.abort_job.outputs.status == 'success'
name: Show logs
run: cat $(find "$LOG_DIR" -type f)
+ - if: success() || failure() && steps.abort_job.outputs.status == 'success'
+ name: Show core dumps
+ run: |
+ app="${1:-${BUILD_DIR}/bin/nvim}"
+ if test "${CI_OS_NAME}" = osx; then
+ cores="$(find /cores/ -type f -print)"
+ else
+ cores="$(find ./ -type f \( -name 'core.*' -o -name core -o -name nvim.core \) -print)"
+ fi
+
+ if test -z "${cores}"; then
+ exit 0
+ fi
+ for core in $cores; do
+ 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}"
+ fi
+ done
+ echo 'Core dumps found'
+ exit 1
+
old_cmake:
name: Test oldest supported cmake
runs-on: ubuntu-22.04
@@ -371,15 +447,15 @@ jobs:
"status=${{ job.status }}" >> $env:GITHUB_OUTPUT
- if: success() || failure() && steps.abort_job.outputs.status == 'success'
- name: Run functionaltests
+ name: Run functionaltest
timeout-minutes: 15
run: cmake --build build --target functionaltest
- if: success() || failure() && steps.abort_job.outputs.status == 'success'
- name: Run oldtests
+ name: Run oldtest
run: |
# Add MSYS to path, required for e.g. `find` used in test scripts.
- # But would break functionaltests, where its `more` would be used then.
+ # But would break functionaltest, where its `more` would be used then.
$OldPath = $env:PATH
$env:PATH = "C:\msys64\usr\bin;$env:PATH"
& "C:\msys64\mingw64\bin\mingw32-make.exe" -C $(Convert-Path src\nvim\testdir) VERBOSE=1
diff --git a/ci/install.sh b/ci/install.sh
deleted file mode 100755
index d65c86032b..0000000000
--- a/ci/install.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-
-# Use default CC to avoid compilation problems when installing Python modules.
-echo "Install neovim module for Python."
-CC=cc python3 -m pip -q install --user --upgrade pynvim
-
-echo "Install neovim RubyGem."
-gem install --no-document --bindir "$BIN_DIR" --user-install --pre neovim
-
-echo "Install neovim npm package"
-npm install -g neovim
-npm link neovim
-
-if [[ $CI_OS_NAME != osx ]]; then
- sudo cpanm -n Neovim::Ext || cat "$HOME/.cpanm/build.log"
- perl -W -e 'use Neovim::Ext; print $Neovim::Ext::VERSION'
-fi
diff --git a/ci/run_tests.sh b/ci/run_tests.sh
deleted file mode 100755
index 8bdc164295..0000000000
--- a/ci/run_tests.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-
-print_core() {
- local app="$1"
- local core="$2"
- echo "======= Core file $core ======="
- 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}"
- fi
-}
-
-check_core_dumps() {
- local app="${1:-${BUILD_DIR}/bin/nvim}"
- local cores
- if test "${CI_OS_NAME}" = osx; then
- cores="$(find /cores/ -type f -print)"
- else
- cores="$(find ./ -type f \( -name 'core.*' -o -name core -o -name nvim.core \) -print)"
- fi
-
- if test -z "${cores}"; then
- return
- fi
- local core
- for core in $cores; do
- print_core "$app" "$core"
- done
- echo 'Core dumps found'
- exit 1
-}
-
-unittests() {(
- ulimit -c unlimited || true
- ninja -C "${BUILD_DIR}" unittest || exit
- check_core_dumps "$(command -v luajit)"
-)}
-
-functionaltests() {(
- ulimit -c unlimited || true
- ninja -C "${BUILD_DIR}" "${FUNCTIONALTEST}" || exit
- check_core_dumps
-)}
-
-oldtests() {(
- ulimit -c unlimited || true
- if ! make oldtest; then
- reset
- exit 1
- fi
- check_core_dumps
-)}
-
-check_runtime_files() {(
- local message="$1"; shift
- local tst="$1"; shift
-
- 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
- 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
- printf "%s%s" "$message" "$file"
- exit 1
- fi
- done
-)}
-
-installtests() {(
- "${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."
- echo 'Failed running :help'
- exit 1
- fi
-
- # Check that all runtime files were installed
- check_runtime_files \
- '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 \
- 'It appears that %s is not installed or is not executable.' \
- -x \
- '*.awk' '*.sh' '*.bat'
-
- # 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
- echo "It appears that $genvimsynf does not contain $gpat."
- exit 1
- fi
-)}
-
-eval "$*" || exit