name: test

on: [push, pull_request]

jobs:
  Linux:
    strategy:
      fail-fast: false
      matrix:
          include:
              - vimbin: vim
                vimtag: v7.4.052
                disable_es: true
              - vimbin: vim
                vimtag: v7.4.629
                disable_es: true
              - vimbin: vim
                vimtag: v7.4.1689
                disable_es: true
              - vimbin: vim
                vimtag: v8.0.0027
                disable_es: true
              - vimbin: vim
                vimtag: v8.0.0183
                disable_es: true
              - vimbin: vim
                vimtag: v8.0.0184
              - vimbin: vim
                vimtag: v8.0.1453
              - vimbin: vim
                vimtag: v8.1.2269
              - vimbin: vim
                vimtag: v8.2.2434
              - vimbin: vim
                vimtag: v8.2.3995
              - vimbin: vim
                vimtag: nightly
              - vimbin: nvim
                vimtag: nightly
              - vimbin: nvim
                vimtag: v0.7.2
              - vimbin: nvim
                vimtag: v0.7.0
              - vimbin: nvim
                vimtag: v0.6.1
              - vimbin: nvim
                vimtag: v0.6.0
              - vimbin: nvim
                vimtag: v0.5.1
              - vimbin: nvim
                vimtag: v0.5.0
              - vimbin: nvim
                vimtag: v0.4.4
              - vimbin: nvim
                vimtag: v0.4.3
              - vimbin: nvim
                vimtag: v0.4.2
              - vimbin: nvim
                vimtag: v0.4.0
              - vimbin: nvim
                vimtag: v0.3.8
    runs-on: ubuntu-20.04
    env:
        VIM_BIN: ${{ matrix.vimbin }}
        VIM_TAG: ${{ matrix.vimtag }}
        DEPS: /home/runner/work/SpaceVim/deps
        DISABLE_ES: ${{ matrix.disable_es }}
    steps:
    - name: Checkout
      uses: actions/checkout@master
    - name: Install dependencies
      run: |
          sudo apt-get update
          sudo apt-get install ninja-build gettext libtool libtool-bin autoconf automake cmake g++ pkg-config unzip curl lua5.2 liblua5.2-dev
    - name: Install ${{ matrix.vimbin }} ${{ matrix.vimtag }}
      run: |
        .ci/install/linux.sh $VIM_BIN $VIM_TAG
    - name: Run test
      run: |
        if [ "$VIM_BIN" = "nvim" ]; then
            export PATH="${DEPS}/_neovim/${VIM_TAG}/bin:${PATH}"
            export VIM="${DEPS}/_neovim/${VIM_TAG}/share/nvim/runtime"
        else
            export PATH="${DEPS}/_vim/${VIM_TAG}/bin:${PATH}"
            export VIM="${DEPS}/_vim/${VIM_TAG}/share/vim"
        fi
        if [ "$DISABLE_ES" = "true" ]; then
            export VIM_Es=""
        else
            export VIM_Es="-Es"
        fi
        export PATH="/home/runner/.local/bin:${PATH}"
        echo "\$PATH: \"${PATH}\""
        echo "\$VIM: \"${VIM}\""
        echo "=================  ${VIM_BIN} version ======================"
        $VIM_BIN --version
        pip3 install --upgrade "pip < 21.0"
        pip3 install covimerage virtualenv codecov
        make test_coverage
        covimerage -vv xml --omit 'build/*' --omit 'bundle/*'
        codecov -X search gcov pycov -f coverage.xml
  Windows:
    strategy:
      fail-fast: false
      matrix:
          include:
              - vimbin: vim
                vimtag: nightly
              - vimbin: vim
                vimtag: v7.4.1185
              - vimbin: vim
                vimtag: v7.4.1689
              - vimbin: vim
                vimtag: v8.0.0027
              - vimbin: vim
                vimtag: v8.0.1453
              - vimbin: vim
                vimtag: v8.1.2269
              - vimbin: vim
                vimtag: v8.2.2434
              - vimbin: vim
                vimtag: v8.2.3995
              - vimbin: nvim
                vimtag: v0.6.1
              - vimbin: nvim
                vimtag: v0.6.0
              - vimbin: nvim
                vimtag: v0.5.1
              - vimbin: nvim
                vimtag: v0.5.0
              - vimbin: nvim
                vimtag: v0.4.4
              - vimbin: nvim
                vimtag: v0.4.3
              - vimbin: nvim
                vimtag: v0.4.2
              - vimbin: nvim
                vimtag: v0.3.8
    runs-on: windows-latest
    env:
        VIM_BIN: ${{ matrix.vimbin }}
        VIM_TAG: ${{ matrix.vimtag }}
        DEPS: C:\deps
    steps:
    - name: Checkout
      uses: actions/checkout@master
    - name: Install ${{ matrix.vimbin }} ${{ matrix.vimtag }}
      run: |
        .ci/install/windows.ps1 $VIM_BIN $VIM_TAG
    - name: Run test
      run: |
        if ($Env:VIM_BIN.StartsWith("nvim"))
        {
          $Env:PATH = $Env:DEPS + '\Neovim\bin\;' + $Env:PATH
          $Env:VIM = $Env:DEPS + '\Neovim\share\nvim'
        }
        elseif ($Env:VIM_BIN.StartsWith("vim"))
        {
          $Env:PATH = $Env:DEPS + '\vim\vim82\;' + $Env:PATH
          $Env:VIM = $Env:DEPS + '\vim'
        }
        # https://github.com/Vimjas/covimerage/issues/95
        # https://github.com/Vimjas/covimerage/issues/90
        # covimerage do not support windows now
        make test