name: test on: push: branches: [main] pull_request: branches: [main] jobs: startup: strategy: matrix: os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Install Vim run: | if [ "$(uname)" = "Darwin" ]; then brew install vim else sudo apt-get update && sudo apt-get install -y vim fi - name: Install vim-plug run: | curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - name: Symlink config run: | ln -sf "$PWD" ~/.vim/chopsticks-src ln -sf "$PWD/.vimrc" ~/.vimrc mkdir -p ~/.vim/modules cp modules/*.vim ~/.vim/modules/ - name: Install plugins run: | set +e vim -i NONE -es -u .vimrc -N -c 'PlugInstall --sync' -c 'qa!' 2>&1 plug_status=$? set -e if [ "$plug_status" -ne 0 ]; then echo "PlugInstall exited with $plug_status; validating plugin directories" fi for plugin in fzf fzf.vim vim-fugitive vim-gitgutter ale vim-lsp vim-lsp-settings asyncomplete.vim asyncomplete-lsp.vim vim-markdown; do test -d "$HOME/.vim/plugged/$plugin" || { echo "FAIL: missing plugin $plugin" exit 1 } done - name: Run Vim smoke tests run: scripts/test.sh vim shellcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check test runner CLI run: | scripts/test.sh --help scripts/test.sh list - name: Run shell and installer tests run: scripts/test.sh shell installer bootstrap docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install markdownlint run: npm install -g markdownlint-cli - name: Lint Markdown run: scripts/test.sh docs