spacemacs/.github/workflows/elisp_test.yml
2020-09-02 08:34:13 +03:00

97 lines
2.4 KiB
YAML
Executable file

name: elisp_tests
on:
schedule:
# Every 4 hours
- cron: '0 */4 * * *'
pull_request:
push:
branches:
- master
- develop
env:
TEST_SCRIPT: ./.github/workflows/scripts/test
MIRROR_SCRIPT: ./.github/workflows/scripts/create_mirror
EM_SCRIPT_PATH: $HOME/elpa-mirror.el
MIRROR_DIR: $HOME/elpa
MIRROR_NAME: elpa-mirror
EM_SCRIPT_URL: "https://raw.githubusercontent.com/\
redguardtoo/\
elpa-mirror/\
master/\
elpa-mirror.el"
defaults:
run:
shell: bash
jobs:
test:
if: ${{ github.event_name != 'schedule' }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
emacs_version: [25.3, 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' }}
- name: Download elpa mirror
continue-on-error: true
uses: actions/download-artifact@v2
with:
name: ${{ env.MIRROR_NAME }}
path: ${{ env.MIRROR_DIR }}
- name: List mirror content
continue-on-error: true
run: find ${{ env.MIRROR_DIR }}
- uses: actions/checkout@v2
- 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
update_elpa_mirror:
if: ${{ github.event_name == 'schedule' }}
runs-on: ubuntu-latest
steps:
- name: Install Emacs
uses: purcell/setup-emacs@master
with:
version: 27.1
- name: Download elpa-mirror.el
run: curl -o ${{ env.EM_SCRIPT_PATH }} ${{ env.EM_SCRIPT_URL }}
- uses: actions/checkout@v2
- name: Create local mirror
run: ${{ env.MIRROR_SCRIPT }}
- name: Upload mirror artifact
uses: actions/upload-artifact@v2
with:
name: ${{ env.MIRROR_NAME }}
path: ${{ env.MIRROR_DIR }}