mirror of
https://github.com/leafOfTree/vim-vue-plugin.git
synced 2026-11-01 10:06:24 +08:00
Merge pull request #46 from leafOfTree/ci-matrix
Test with several Vim and Neovim versions and fixed deps
This commit is contained in:
3 files changed
+44
-12
No files matched your search
@@ -6,10 +6,23 @@ on:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: ${{ matrix.neovim && 'nvim' || 'vim' }} ${{ matrix.version }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- { neovim: false, version: v8.2.0000 }
|
||||
- { neovim: false, version: stable }
|
||||
- { neovim: true, version: v0.9.5 }
|
||||
- { neovim: true, version: stable }
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install Vim and Neovim
|
||||
run: sudo apt-get update && sudo apt-get install -y vim neovim
|
||||
- uses: rhysd/action-setup-vim@v1
|
||||
with:
|
||||
neovim: ${{ matrix.neovim }}
|
||||
version: ${{ matrix.version }}
|
||||
- name: Run tests
|
||||
run: ./test/run.sh
|
||||
env:
|
||||
VUE_TEST_EDITORS: ${{ matrix.neovim && 'nvim' || 'vim' }}
|
||||
@@ -217,6 +217,7 @@ Run tests with Vim and Neovim, whichever is installed
|
||||
```sh
|
||||
./test/run.sh
|
||||
./test/run.sh basic template # Only these cases
|
||||
VUE_TEST_EDITORS=nvim ./test/run.sh # Only Neovim
|
||||
```
|
||||
|
||||
Each case is a `.vue` or `.wpy` file in [test/cases](test/cases), with an optional `.vim` file for the config and checks. A case fails if
|
||||
@@ -226,7 +227,7 @@ Each case is a `.vue` or `.wpy` file in [test/cases](test/cases), with an option
|
||||
- a check in `Check()` fails, such as syntax, `GetVueTag()`, `GetVueSyntax()` or fold level
|
||||
- there is an error message
|
||||
|
||||
Tests also run on GitHub Actions for each push and pull request.
|
||||
Tests also run on GitHub Actions for each push and pull request, with Vim 8.2.0000, the latest Vim, Neovim 0.9.5 and the latest Neovim.
|
||||
|
||||
## Acknowledgments & Refs
|
||||
|
||||
|
||||
+27
-9
@@ -1,17 +1,27 @@
|
||||
#!/bin/sh
|
||||
# Run all test cases, or the ones given as arguments, with vim and nvim if
|
||||
# they are installed. Vim runs in a pseudo terminal by `script`, as syntax
|
||||
# in Ex mode (-es) isn't the same as in a terminal.
|
||||
# they are installed, or only the ones in $VUE_TEST_EDITORS. Vim runs in a
|
||||
# pseudo terminal by `script`, as syntax in Ex mode (-es) isn't the same as
|
||||
# in a terminal.
|
||||
# ./test/run.sh
|
||||
# ./test/run.sh basic template
|
||||
# VUE_TEST_EDITORS=nvim ./test/run.sh
|
||||
cd "$(dirname "$0")/.." || exit 1
|
||||
editors=${VUE_TEST_EDITORS:-vim nvim}
|
||||
|
||||
# Syntax plugins used by test/cases/example.vue
|
||||
# Syntax plugins used by test/cases/example.vue, at fixed commits
|
||||
mkdir -p test/deps
|
||||
for repo in digitaltoad/vim-pug kchmck/vim-coffee-script \
|
||||
leafgarland/typescript-vim iloginow/vim-stylus; do
|
||||
for dep in digitaltoad/vim-pug@ea39cd942cf3194230cf72bfb838901a5344d3b3 \
|
||||
kchmck/vim-coffee-script@28421258a8dde5a50deafbfc19cd9873cacfaa79 \
|
||||
leafgarland/typescript-vim@4740441db1e070ef8366c888c658000dd032e4cb \
|
||||
iloginow/vim-stylus@0e457b09db55d3518703bb22e1555872c5c44b7a; do
|
||||
repo=${dep%@*}
|
||||
commit=${dep#*@}
|
||||
dir=test/deps/${repo#*/}
|
||||
[ -d "$dir" ] || git clone -q --depth 1 "https://github.com/$repo" "$dir"
|
||||
[ -d "$dir" ] && continue
|
||||
git init -q "$dir" &&
|
||||
git -C "$dir" fetch -q --depth 1 "https://github.com/$repo" "$commit" &&
|
||||
git -C "$dir" checkout -q FETCH_HEAD || exit 1
|
||||
done
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
@@ -20,17 +30,24 @@ else
|
||||
cases=$(ls test/cases/*.vue test/cases/*.wpy 2>/dev/null | sed 's#.*/##; s#\.[a-z]*$##')
|
||||
fi
|
||||
|
||||
has_editor() {
|
||||
case " $editors " in
|
||||
*" $1 "*) command -v "$1" >/dev/null ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
out=$(mktemp)
|
||||
status=0
|
||||
expected=0
|
||||
for name in $cases; do
|
||||
if command -v vim >/dev/null; then
|
||||
if has_editor vim; then
|
||||
expected=$((expected + 1))
|
||||
VUE_TEST_CASE=$name VUE_TEST_OUT=$out timeout 60 script -qec \
|
||||
'stty rows 40 cols 120; vim -N -u NONE -i NONE -S test/run.vim' \
|
||||
/dev/null >/dev/null || status=1
|
||||
fi
|
||||
if command -v nvim >/dev/null; then
|
||||
if has_editor nvim; then
|
||||
expected=$((expected + 1))
|
||||
VUE_TEST_CASE=$name VUE_TEST_OUT=$out timeout 60 \
|
||||
nvim --headless -u NONE -i NONE -S test/run.vim || status=1
|
||||
@@ -42,6 +59,7 @@ passed=$(grep -c '^ok' "$out")
|
||||
failed=$(grep -c '^FAIL' "$out")
|
||||
missing=$((expected - passed - failed))
|
||||
echo "$passed passed, $failed failed, $missing without result"
|
||||
[ $failed -eq 0 ] && [ $missing -eq 0 ] || status=1
|
||||
[ $expected -gt 0 ] || echo "No editor found in: $editors"
|
||||
[ $expected -gt 0 ] && [ $failed -eq 0 ] && [ $missing -eq 0 ] || status=1
|
||||
rm -f "$out"
|
||||
exit $status
|
||||
Reference in new issue
Block a user