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 }} CORE_TR: core BASE_TR: layers/+distribution/spacemacs-base LAYER_TR: layers/+distribution/spacemacs defaults: run: shell: bash permissions: contents: read # to fetch code (actions/checkout) jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs_version: [27.2, 28.2] steps: # Installing Emacs on Unix - name: Install Emacs on UNIX continue-on-error: true id: unix-install-1 uses: purcell/setup-emacs@master with: version: ${{ matrix.emacs_version }} if: ${{ matrix.os != 'windows-latest' }} - name: Install Emacs on UNIX [retry 1] continue-on-error: true id: unix-install-2 uses: purcell/setup-emacs@master with: version: ${{ matrix.emacs_version }} if: ${{ matrix.os != 'windows-latest' && steps.unix-install-1.outcome == 'failure' }} - name: Install Emacs on UNIX [retry 2] continue-on-error: false id: unix-install-3 uses: purcell/setup-emacs@master with: version: ${{ matrix.emacs_version }} if: ${{ matrix.os != 'windows-latest' && steps.unix-install-2.outcome == 'failure' }} # Installing Emacs on Windows - name: Install Emacs on Windows continue-on-error: true id: windows-install-1 uses: jcs090218/setup-emacs-windows@master with: version: ${{ matrix.emacs_version }} if: ${{ matrix.os == 'windows-latest' }} - name: Install Emacs on Windows [retry 1] continue-on-error: true id: windows-install-2 uses: jcs090218/setup-emacs-windows@master with: version: ${{ matrix.emacs_version }} if: ${{ matrix.os == 'windows-latest' && steps.windows-install-1.outcome == 'failure' }} - name: Install Emacs on Windows [retry 2] continue-on-error: false id: windows-install-3 uses: jcs090218/setup-emacs-windows@master with: version: ${{ matrix.emacs_version }} if: ${{ matrix.os == 'windows-latest' && steps.windows-install-2.outcome == 'failure' }} # --------------------------- - 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 for core tests run: ${{ env.TEST_SCRIPT }} ${{ env.CORE_TR }} installation - name: Core unit testing run: ${{ env.TEST_SCRIPT }} ${{ env.CORE_TR }} unit_tests - name: Core functional testing run: ${{ env.TEST_SCRIPT }} ${{ env.CORE_TR }} func_tests - name: Dependencies installation for Base tests run: ${{ env.TEST_SCRIPT }} ${{ env.BASE_TR }} installation - name: Base unit testing run: ${{ env.TEST_SCRIPT }} ${{ env.BASE_TR }} unit_tests - name: Base functional testing run: ${{ env.TEST_SCRIPT }} ${{ env.BASE_TR }} func_tests - name: Dependencies installation for Layers tests run: ${{ env.TEST_SCRIPT }} ${{ env.LAYER_TR }} installation - name: Layers unit testing run: ${{ env.TEST_SCRIPT }} ${{ env.LAYER_TR }} unit_tests - name: Layers functional testing run: ${{ env.TEST_SCRIPT }} ${{ env.LAYER_TR }} func_tests