<feed xmlns='http://www.w3.org/2005/Atom'>
<title>org-drill/Makefile, 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-10T17:52:08+00:00</updated>
<entry>
<title>build: migrate from Cask to Eask</title>
<updated>2026-05-10T17:52:08+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-10T17:52:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=d0128942724795511e19f5478b60e34e194cdcad'/>
<id>urn:sha1:d0128942724795511e19f5478b60e34e194cdcad</id>
<content type='text'>
Cask's upstream has slowed. Eask is the actively maintained successor.

Eask's `package-file` directive doesn't auto-install the deps from the .el header's Package-Requires, so the Eask file mirrors emacs/seq/org/persist explicitly. `eask install-deps` also doesn't pull transitive deps, so dash, m-buffer, and shut-up needed their own `depends-on` lines for undercover and elisp-lint to activate.

The Makefile swaps are mechanical: $(CASK) → $(EASK), `cask install` → `eask install-deps --dev`, `cask build` → `eask compile`.

The URL in org-drill.el's header pointed at the abandoned upstream's GitLab issues page. Eask cross-validates that against website-url, so I updated it to the GitHub mirror — where users file issues now.
</content>
</entry>
<entry>
<title>build: add lint, compile, validate-parens, and :slow tag filter</title>
<updated>2026-05-05T08:28:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T08:28:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=88da84f2ce342f006e8cfb3ec302cc9e32af0591'/>
<id>urn:sha1:88da84f2ce342f006e8cfb3ec302cc9e32af0591</id>
<content type='text'>
I want a stronger maintainer-discipline baseline as I take over more of this project, so I added four targets that are common in Emacs-Lisp packages.

`make lint` runs `checkdoc`, `package-lint`, and `elisp-lint` over `org-drill.el`. It's informational for now and doesn't fail on findings, because the existing source has known docstring and style debt to clear. I'll re-tighten to a hard gate after the docstring pass is done. `make compile` byte-compiles the source with `byte-compile-error-on-warn nil`, matching the existing `build` target's leniency. `make validate-parens` is a fast structural check that surfaces the line of the offending paren without needing a full byte-compile pass.

I also added a `:slow` tag filter to the default ERT runners. `test-unit`, `test-integration`, `test-file`, and `coverage` now run with `'(not (tag :slow))`. Tests tagged `:slow` get skipped on the fast feedback path. `test-name` is left alone, since a pattern argument means the user wants those tests run whether or not they're tagged slow.

Cask gets `package-lint` and `elisp-lint` as development deps. `.gitignore` gets `*-autoloads.el` so the Cask build artifact stays out.
</content>
</entry>
<entry>
<title>build: add make coverage target via undercover</title>
<updated>2026-05-05T08:10:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T08:10:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=77fe06b0c6f01d1d76bdf503c1b12286ac29aa0a'/>
<id>urn:sha1:77fe06b0c6f01d1d76bdf503c1b12286ac29aa0a</id>
<content type='text'>
I want to track test coverage as I work through the upstream issue backlog, so I added an undercover-based flow that mirrors how `make test-unit` already runs each file in its own Cask Emacs process.

The Makefile gets `make coverage` and `make coverage-clean`. A new helper at `tests/run-coverage-file.el` instruments `org-drill.el` before the source is loaded. Undercover merges per-file results into a single simplecov JSON at `.coverage/simplecov.json`. I added `undercover` as a Cask development dep and `.coverage/` to `.gitignore` so the report stays local.

I also renamed `make install` to `make setup`. The old name read like "deploy the package onto my system," but the target only installs Cask deps into the local `.cask/` directory. `setup` is closer to what it actually does, and all the internal `: install` prerequisites move with it.

Baseline at this commit is 10.8% (208/1928 lines on org-drill.el).
</content>
</entry>
<entry>
<title>test: Add Phase 1 foundation tests for critical functions</title>
<updated>2025-11-13T17:36:06+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-13T17:36:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=cf182d001f66164232b8735bad43eb07121109c6'/>
<id>urn:sha1:cf182d001f66164232b8735bad43eb07121109c6</id>
<content type='text'>
- Add unit tests for org-drill-entry-p (14 tests)
- Add unit tests for org-drill-part-of-drill-entry-p (14 tests)
- Add unit tests for SM2 scheduling algorithm (23 tests)
- Add integration test for basic drill workflow (11 tests)
- Update Makefile to support test-*.el naming pattern
- Rename org-drill-test.el to test-org-drill.el for consistency

Total: 65 tests, all passing
</content>
</entry>
<entry>
<title>refactor: Improve test infrastructure and fix all compiler warnings</title>
<updated>2025-11-13T17:03:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-13T17:03:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=87e74a3a6ccf5b05b760e9f8beec9a78886ab076'/>
<id>urn:sha1:87e74a3a6ccf5b05b760e9f8beec9a78886ab076</id>
<content type='text'>
This commit modernizes the test infrastructure and eliminates all
compilation warnings to prepare for comprehensive test coverage.

Test Infrastructure Improvements:
- Reorganize tests from test/ to tests/ directory (standard convention)
- Modernize Makefile with patterns from chime.el
  - Add convenient test targets (test-file, test-name)
  - Support unit and integration test separation
  - Better help documentation with examples
  - Auto-detect Cask installation location
- Add comprehensive test-strategy.org document
  - 6-week implementation plan
  - Critical function prioritization
  - Integration test scenarios
  - Coverage goals (80% target)

Compiler Warning Fixes (org-drill.el):
- Replace obsolete org-mode functions:
  - org-show-subtree → org-fold-show-subtree
  - org-show-entry → org-fold-show-entry
  - org-get-tags-at → org-get-tags
  - org-remove-latex-fragment-image-overlays → org-clear-latex-preview
  - org-toggle-latex-fragment → org-latex-preview
  - org-bracket-link-regexp → org-link-bracket-re
- Fix ~31 unescaped single quotes in docstrings (use \=')
- Remove unused lexical variables (cb, drawer-name, session, orig-fun)
- Remove obsolete outline-view-change-hook binding
- Wrap org 8.x compatibility shim in with-no-warnings
- Fix long docstring at line 1085

Test Status:
- All 3 existing tests passing
- Zero compilation warnings (was ~40 warnings)
- Ready for Phase 1 implementation (foundation tests)
</content>
</entry>
<entry>
<title>Update docker images</title>
<updated>2021-04-28T10:12:21+00:00</updated>
<author>
<name>Phillip Lord</name>
<email>phillip.lord@russet.org.uk</email>
</author>
<published>2021-04-28T10:12:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=6acc0d9d674f065f8d4278b333ab924c42cbdd88'/>
<id>urn:sha1:6acc0d9d674f065f8d4278b333ab924c42cbdd88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Document explainer</title>
<updated>2019-06-29T16:49:33+00:00</updated>
<author>
<name>Phillip Lord</name>
<email>phillip.lord@russet.org.uk</email>
</author>
<published>2019-06-29T16:49:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=c44ca7447b9b4f53f568e4d55614a5848717fd78'/>
<id>urn:sha1:c44ca7447b9b4f53f568e4d55614a5848717fd78</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix more byte compile errors</title>
<updated>2019-06-23T20:30:28+00:00</updated>
<author>
<name>Phillip Lord</name>
<email>phillip.lord@russet.org.uk</email>
</author>
<published>2019-06-23T20:30:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=8644cfd761e12cd04b8de76f19f5fa1ba7847487'/>
<id>urn:sha1:8644cfd761e12cd04b8de76f19f5fa1ba7847487</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Support changing small sleep on command line</title>
<updated>2019-06-22T11:29:02+00:00</updated>
<author>
<name>Phillip Lord</name>
<email>phillip.lord@russet.org.uk</email>
</author>
<published>2019-06-22T11:29:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=6533b732469dd4a8014e9e3ffb29625947d387ed'/>
<id>urn:sha1:6533b732469dd4a8014e9e3ffb29625947d387ed</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Spanish card fixes and full test set</title>
<updated>2019-06-21T21:38:34+00:00</updated>
<author>
<name>Phillip Lord</name>
<email>phillip.lord@russet.org.uk</email>
</author>
<published>2019-06-21T21:38:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=8c36f488e28e4e89e8b570b848b7cea411046c39'/>
<id>urn:sha1:8c36f488e28e4e89e8b570b848b7cea411046c39</id>
<content type='text'>
</content>
</entry>
</feed>
