<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chime/Makefile, branch main</title>
<subtitle>Emacs chimes, notifications, and modeline reminders so you don't miss events
</subtitle>
<id>https://git.cjennings.net/chime/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/chime/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/'/>
<updated>2026-05-05T10:27:12+00:00</updated>
<entry>
<title>ci: add GitHub Actions workflow with test matrix, lint, and coverage</title>
<updated>2026-05-05T10:27:12+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T10:27:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=69d8b29f839d8fee957e644013000f90c1283be4'/>
<id>urn:sha1:69d8b29f839d8fee957e644013000f90c1283be4</id>
<content type='text'>
I added `.github/workflows/ci.yml` with three jobs:

1. test — Emacs 27.1 / 28.2 / 29.4 / 30.1, runs `make compile` (strict
   warnings) and `make test-all`. fail-fast off so one version's failure
   doesn't hide others.
2. lint (advisory) — `eask lint package`, `eask lint checkdoc`, and `make
   lint` (elisp-lint). All three are `continue-on-error: true` because there's
   an existing MELPA-prep backlog (1 package-lint error in chime-org-contacts.el,
   ~17 cosmetic checkdoc/package-lint warnings) that's worth surfacing without
   blocking CI. Tighten to required once the backlog is cleared.
3. coverage — runs the full suite with undercover and uploads to Coveralls
   via the official action. No secret needed because the repo is public —
   GITHUB_TOKEN is enough.

Two supporting changes:

- `tests/run-coverage-file.el` now switches between simplecov (local) and
  coveralls (CI, detected via the `CI` env var GitHub Actions sets
  automatically) report formats. The Coveralls action expects coveralls JSON.
- `Makefile`'s `coverage' target now runs ALL_TESTS with selector `t', not
  UNIT_TESTS with `(not (tag :slow))'. Without this the integration tests
  contributed nothing to the reported coverage number.
</content>
</entry>
<entry>
<title>build: fail compile on byte-compile warnings</title>
<updated>2026-05-05T10:07:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T10:07:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=84949b4b1d767b10e400bdb126d6091f0684cd65'/>
<id>urn:sha1:84949b4b1d767b10e400bdb126d6091f0684cd65</id>
<content type='text'>
I set `byte-compile-error-on-warn` to t in the root `compile' target. The
warning backlog is clear, so any new warning should break the build instead
of slipping by silently.
</content>
</entry>
<entry>
<title>build: add eask manifest and setup/compile/coverage targets</title>
<updated>2026-05-05T09:57:14+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T09:57:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=e54041ac630fe31a9968cf41c452feee317a4049'/>
<id>urn:sha1:e54041ac630fe31a9968cf41c452feee317a4049</id>
<content type='text'>
I switched the test runner from `~/.emacs.d/elpa`-grep to eask. With
this, `make setup` installs every dep into a project-local `.eask/`,
so test runs don't depend on whatever's in my global elpa. It also
lets us catch missing Package-Requires entries before MELPA submission.

New targets:

- `make setup` — runs `eask install-deps --dev`
- `make compile` — byte-compiles chime.el and surfaces warnings that
  checkdoc and elisp-lint don't catch
- `make coverage` — runs the unit suite under undercover and writes a
  simplecov JSON to `.coverage/simplecov.json`
- `make test-all` — runs every test, including `:slow` tagged
- `-include makefile-local` in both Makefiles, for per-machine knobs

I added `ERT_FAST_SELECTOR` so `make test`, `test-unit`,
`test-integration`, and `test-file` exclude tests tagged `:slow`. When
we tag end-to-end integration tests as `:slow`, they'll stay out of
the fast feedback loop until someone explicitly asks for them via
`make test-all`.

Eask treats CWD as its workspace. So all eask invocations now run
from project root, with `(cd "tests/")' as the first `--eval' to
restore Emacs's default-directory. That preserves the relative loads
the existing test files and test-bootstrap.el rely on, without
touching either.

I updated `.gitignore` for `.eask/`, `.coverage/`, and the optional
`makefile-local` files.
</content>
</entry>
<entry>
<title>Consolidate Makefiles and update TESTING.org</title>
<updated>2026-04-04T22:05:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-04T22:05:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=b2b7f2468154435a28a174f5ec31e19e20fe44d2'/>
<id>urn:sha1:b2b7f2468154435a28a174f5ec31e19e20fe44d2</id>
<content type='text'>
Root Makefile now delegates to tests/Makefile. Fixed stale
UNIT_TESTS/INTEGRATION_TESTS definitions, added test-name target,
switched to per-file test execution for better isolation.
</content>
</entry>
<entry>
<title>changed repositories</title>
<updated>2025-11-18T17:13:39+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-18T17:13:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=4835fadabf243b33fb78557e45428055675e7300'/>
<id>urn:sha1:4835fadabf243b33fb78557e45428055675e7300</id>
<content type='text'>
</content>
</entry>
</feed>
