+name: CI
+on: [push, pull_request]
+
+jobs:
+ vint:
+ name: Run vint
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ - run: pip install vim-vint
+ - run: vint --warning --verbose --enable-neovim ./autoload ./plugin
+
+ unit-test:
+ name: Unit tests
+ strategy:
+ matrix:
+ os: [macos-latest, ubuntu-latest, windows-latest]
+ neovim: [true, false]
+ fail-fast: false
+ runs-on: ${{ matrix.os }}
+ steps:
+ - uses: actions/checkout@v2
+ - name: Checkout themis.vim
+ uses: actions/checkout@v2
+ with:
+ repository: thinca/vim-themis
+ path: vim-themis
+ - uses: rhysd/action-setup-vim@v1
+ id: vim
+ with:
+ neovim: ${{ matrix.neovim }}
+ - name: Run unit tests
+ env:
+ THEMIS_VIM: ${{ steps.vim.outputs.executable }}
+ THEMIS_PROFILE: profile.txt
+ run: ./vim-themis/bin/themis ./test/unit
+ - uses: actions/setup-python@v2
+ if: matrix.os != 'windows-latest'
+ - name: Report coverage
+ if: matrix.os != 'windows-latest'
+ run: |
+ # https://github.com/Vimjas/covimerage/issues/95
+ pip install 'click<8.0.0'
+ pip install covimerage
+ covimerage write_coverage profile.txt
+ coverage report
+ coverage xml
+ - name: Upload coverage to codecov
+ if: matrix.os != 'windows-latest'
+ uses: codecov/codecov-action@v1
+ with:
+ file: ./coverage.xml
+
+ integ-test:
+ name: Integration tests
+ strategy:
+ matrix:
+ neovim: [true, false]
+ fail-fast: false
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Checkout themis.vim
+ uses: actions/checkout@v2
+ with:
+ repository: thinca/vim-themis
+ path: vim-themis
+ - uses: rhysd/action-setup-vim@v1
+ id: vim
+ with:
+ neovim: ${{ matrix.neovim }}
+ - name: Checkout vim-lsp
+ uses: actions/checkout@v2
+ with:
+ repository: prabirshrestha/vim-lsp
+ path: test/integ/deps/vim-lsp
+ - name: Checkout ale
+ uses: actions/checkout@v2
+ with:
+ repository: dense-analysis/ale
+ path: test/integ/deps/ale
+ - name: Install rust-analyzer
+ run: |
+ mkdir ~/bin
+ curl --fail -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu.gz -o rust-analyzer.gz
+ gunzip ./rust-analyzer.gz
+ chmod +x ./rust-analyzer
+ mv ./rust-analyzer ~/bin
+ echo "$HOME/bin" >> $GITHUB_PATH
+ - name: Run integration tests
+ env:
+ THEMIS_VIM: ${{ steps.vim.outputs.executable }}
+ run: ./vim-themis/bin/themis ./test/integ
+ - name: Show runtime information
+ if: ${{ failure() }}
+ run: |
+ echo 'integ_messages.txt'
+ [ -f test/integ/integ_messages.txt ] && cat test/integ/integ_messages.txt
+ echo 'lsp-log.txt'
+ [ -f test/integ/lsp-log.txt ] && cat test/integ/lsp-log.txt