name: elisp tests

on:
  pull_request:
  push:
    branches:
      - master
      - develop

env:
  TEST_SCRIPT: ./.github/workflows/scripts/test
  TESTELPA_REPO: JAremko/testelpa-develop
  GITHUB_WORKSPACE: ${{ github.workspace }}

defaults:
  run:
    shell: bash

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        emacs_version: [26.3, 27.1, snapshot]
        test_root:
          - core
          - layers/+distribution/spacemacs-base
          - layers/+distribution/spacemacs
    steps:
    - name: Install Emacs on UNIX
      uses: purcell/setup-emacs@master
      with:
        version: ${{ matrix.emacs_version }}
      if: ${{ matrix.os != 'windows-latest' }}

    - name: Install Emacs on Windows
      uses: jcs090218/setup-emacs-windows@master
      with:
        version: ${{ matrix.emacs_version }}
      if: ${{ matrix.os == 'windows-latest' }}

    - uses: actions/checkout@v2

    - name: Fetch Spacemacs elpa mirror
      run: |
        curl -L \
        https://github.com/$TESTELPA_REPO/releases/latest/download/elpa.zip \
        --output /tmp/elpa.zip

    - name: Unpack elpa mirror
      run: unzip /tmp/elpa.zip -d ../testelpa_mirror

    - name: Dependencies installation
      run: ${{ env.TEST_SCRIPT }} ${{ matrix.test_root }} installation
    - name: Unit testing
      run: ${{ env.TEST_SCRIPT }} ${{ matrix.test_root }} unit_tests
    - name: Functional testing
      run: ${{ env.TEST_SCRIPT }} ${{ matrix.test_root }} func_tests
