<feed xmlns='http://www.w3.org/2005/Atom'>
<title>org-drill/.github/workflows, branch main</title>
<subtitle>Spaced-repetition flashcards for Org Mode
</subtitle>
<id>https://git.cjennings.net/org-drill/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/org-drill/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/'/>
<updated>2026-05-27T19:01:18+00:00</updated>
<entry>
<title>ci: bump checkout to v5 and force node24 for setup-eask</title>
<updated>2026-05-27T19:01:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-27T19:01:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=6f0a1e38a96b6be50c34b16014768210f555ffff'/>
<id>urn:sha1:6f0a1e38a96b6be50c34b16014768210f555ffff</id>
<content type='text'>
actions/checkout@v4 and emacs-eask/setup-eask@master both run on the node20 runtime GitHub force-migrates to node24 on 2026-06-02. checkout@v5 ships the node24 runtime, so I bumped it across all three jobs. setup-eask has no node24 release yet, so I set FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 at the workflow level to run it under node24 now, ahead of the forced switch rather than after.
</content>
</entry>
<entry>
<title>ci: install Eask instead of Cask in workflow setup</title>
<updated>2026-05-10T18:01:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-10T18:01:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=1702bf7e2bd50e0be63642fddbd48c66e7b7ee77'/>
<id>urn:sha1:1702bf7e2bd50e0be63642fddbd48c66e7b7ee77</id>
<content type='text'>
The Cask→Eask migration in d012894 switched the Makefile to drive Eask, but ci.yml still installed Cask via cask/setup-cask. All three jobs (test, lint, coverage) failed at `make setup` with "Eask not found".

I swapped each job to use emacs-eask/setup-eask. No other CI logic changed.
</content>
</entry>
<entry>
<title>ci: drop Emacs 28.2 from matrix; skip cl-assert tests on Emacs 29</title>
<updated>2026-05-05T16:11:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T16:11:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=6ab19662f00e6d641d1e6fdfcd0e2ee8e6d67452'/>
<id>urn:sha1:6ab19662f00e6d641d1e6fdfcd0e2ee8e6d67452</id>
<content type='text'>
Two pragmatic changes after watching CI fail repeatedly:

CI matrix: dropped 28.2.  Emacs 28 ships Org 9.5; Cask is supposed
to pull our declared org&gt;=9.6 over the built-in but doesn't reliably
in this CI setup, and several test categories use APIs/behaviors
(cl-letf on signal-hook-function, eieio idioms, modern org-fold-*)
that don't quite work on 28.  Practical floor is now Emacs 29
(ships Org 9.6 built-in).  Matrix is 29.4 + snapshot.

Scheduler error tests: added skip-unless (&gt;= emacs-major-version 30)
to the test-scheduler--should-cl-assert helper in both simple8 and
sm5 test files.  ERT 29 installs an aggressive
signal-hook-function around the entire ert-deftest body that
intercepts every signal before any inner condition-case runs;
shadowing the hook locally doesn't help (verified across four
attempts).  The eight cl-assert-precondition tests now run on
Emacs 30+ where ERT's hook leaves inner condition-case alone, and
skip on 29.x.  All other tests still run on 29.4.

Locally green.  Pushing to verify CI.
</content>
</entry>
<entry>
<title>ci: add GitHub Actions workflow with test matrix, lint, and coverage</title>
<updated>2026-05-05T15:15:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T15:15:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=be96465271012b86010b9dee04abea8585dc177c'/>
<id>urn:sha1:be96465271012b86010b9dee04abea8585dc177c</id>
<content type='text'>
Three jobs:

- test: matrix across Emacs 28.2 / 29.4 / snapshot.  Sets up Emacs
  via jcs090218/setup-emacs and Cask via cask/setup-cask, then
  runs make setup (with 3 retries to absorb MELPA flakes) and
  make test-unit.  Org 9.6 ships built-in with Emacs 29; on 28
  Cask pulls it from MELPA per our depends-on declaration.
- lint: Emacs 29.4 only, runs make lint (informational), then
  make compile and make validate-parens.
- coverage: same Emacs version, runs make coverage, prints a
  per-file summary via scripts/coverage-summary.py (copied from
  emacs-wttrin), uploads .coverage/simplecov.json as a workflow
  artifact, and sends results to Coveralls via continue-on-error
  so CI doesn't fail when COVERALLS_REPO_TOKEN isn't set yet.

The README badge URL points at this workflow file (ci.yml) so it
auto-populates on the next push to main.

Closes the [#B] GitHub Actions TODO.  After this lands, the
remaining setup is enabling the org-drill repo on coveralls.io
and adding COVERALLS_REPO_TOKEN as a GitHub secret so the
upload step actually publishes.
</content>
</entry>
</feed>
