Job logs are not anonymously readable; emit FAIL/expected/got lines (or the log tail on a load error) as ::error:: annotations so the failing assertion is visible through the public Checks API. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
57 lines
1.8 KiB
YAML
57 lines
1.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main, 'dev/**']
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
emacs_version: ['28.1', '29.4', '30.1']
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- uses: purcell/setup-emacs@master
|
|
with:
|
|
version: ${{ matrix.emacs_version }}
|
|
|
|
- name: Install dash from GNU ELPA
|
|
run: |
|
|
emacs -Q --batch --eval "(progn \
|
|
(require 'package) \
|
|
(setq package-user-dir (expand-file-name \".elpa\")) \
|
|
(add-to-list 'package-archives '(\"gnu\" . \"https://elpa.gnu.org/packages/\")) \
|
|
(package-initialize) \
|
|
(package-refresh-contents) \
|
|
(package-install 'dash))"
|
|
# Trailing slash: match only the package directory, not the
|
|
# adjacent dash-N.N.N.signed marker GNU ELPA leaves behind.
|
|
echo "LOAD_EXTRA=-L $(ls -d "$PWD"/.elpa/dash-*/ | head -1)" >> "$GITHUB_ENV"
|
|
|
|
- name: Byte-compile (warnings are errors)
|
|
run: make compile-all WERROR=t LOAD_EXTRA="$LOAD_EXTRA"
|
|
|
|
- name: ERT suite
|
|
run: make test LOAD_EXTRA="$LOAD_EXTRA"
|
|
|
|
- name: ERT suite (shuffled order)
|
|
run: make test-shuffled LOAD_EXTRA="$LOAD_EXTRA"
|
|
|
|
- name: README doctests
|
|
run: |
|
|
set -o pipefail
|
|
make doctest LOAD_EXTRA="$LOAD_EXTRA" 2>&1 | tee doctest.log || {
|
|
# Surface failing assertions as annotations (job logs are
|
|
# not readable anonymously; annotations are).
|
|
grep -E '^(FAIL| expected:| got:)' doctest.log | head -30 \
|
|
| while IFS= read -r l; do echo "::error::${l}"; done
|
|
grep -q '^FAIL' doctest.log || tail -n 8 doctest.log \
|
|
| while IFS= read -r l; do echo "::error::${l}"; done
|
|
exit 1
|
|
}
|