<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gloss/tests/testutil-gloss.el, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.cjennings.net/gloss/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/gloss/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/gloss/'/>
<updated>2026-04-28T23:08:09+00:00</updated>
<entry>
<title>test: add Wiktionary fixture loader helper</title>
<updated>2026-04-28T23:08:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-28T23:08:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/gloss/commit/?id=3a846506399dc12ab219bfa8047947c122dd1d04'/>
<id>urn:sha1:3a846506399dc12ab219bfa8047947c122dd1d04</id>
<content type='text'>
Append `gloss-test--load-wiktionary-fixture' to tests/testutil-gloss.el. It takes a fixture name (e.g. "anaphora") and returns the raw JSON body from tests/fixtures/wiktionary-NAME.json, or signals `error' with the full path when the file isn't there. The helper resolves the fixtures directory from a `defconst' captured at load time. That way it works the same whether a test file requires testutil-gloss directly or pulls it in transitively through `make test'.

Three ERT cases under tests/test-testutil-gloss--load-wiktionary-fixture.el cover Normal (anaphora loads as a non-empty JSON string), Boundary (the smallest fixture, 404, loads), and Error (a missing fixture raises with the path embedded in the message).

Verified with `make test': 35 passed, 0 unexpected.
</content>
</entry>
<entry>
<title>refactor: extract missing-glossary test helper</title>
<updated>2026-04-28T19:31:34+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-28T19:31:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/gloss/commit/?id=1e2da6b1a463492ada31ce473414289e761519ca'/>
<id>urn:sha1:1e2da6b1a463492ada31ce473414289e761519ca</id>
<content type='text'>
Four tests across lookup, list, find-buffer-position, and first-call-creates-file shared the same boilerplate. Each let-bound gloss-file to a randomized nonexistent path, wrapped in unwind-protect, reset the cache, and cleaned up file and buffer afterward.

Extracted as gloss-test--with-missing-glossary in testutil-gloss.el, parallel to the existing gloss-test--with-temp-glossary. The four call sites drop from 8-10 lines each to 2-3.

Tested by running the full 32-test suite. All 32 pass in 0.21 seconds.
</content>
</entry>
<entry>
<title>test: add gloss-core test suite (red phase)</title>
<updated>2026-04-28T19:21:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-28T19:21:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/gloss/commit/?id=4cd1e8e63d885d8de2728dc76d4f35f0eb597037'/>
<id>urn:sha1:4cd1e8e63d885d8de2728dc76d4f35f0eb597037</id>
<content type='text'>
The commit lands eight per-function test files and a shared testutil. 32 tests across Normal/Boundary/Error categories cover the public API (lookup, save, list, find-buffer-position) and the internals that need observable behavior tests (mtime invalidation, corrupt-file resilience, alphabetical insert, first-call file creation).

All 32 fail with void-function on the gloss-core symbols. That is the intended red-phase signal. The next commit lands the implementation that turns them green.

testutil-gloss provides a with-temp-glossary macro. It binds gloss-file to a temp file, resets the cache before and after, and cleans up the visiting buffer.
</content>
</entry>
</feed>
