aboutsummaryrefslogtreecommitdiff
path: root/tests/test-system-defaults-functions.el
Commit message (Collapse)AuthorAgeFilesLines
* test: repair the seven files red under Emacs 31.1HEADmainCraig Jennings10 hours1-0/+6
| | | | | | | | | | | | | None of the seven was a config regression. Each file had its own cause: - config-utilities: the tests mocked fboundp with cl-letf. fset on a subr autoloads comp-run, which requires bytecomp, whose defun of byte-compile-file replaced the mock installed earlier in the same cl-letf. 30.2 hid it because ert happened to load bytecomp first. I extracted cj/--compile-elisp-file with an injectable availability predicate (fboundp by default), made cj/compile-this-elisp-buffer the wrapper, and had the tests inject a predicate instead of redefining a primitive. Added the missing no-compiler case. - system-defaults-functions: the file let-bound use-package-always-ensure before anything declared it special. 30.2 downgraded that to a "Failed to parse package recentf" warning; 31.1 moves the defcustom to autoload time, where it is fatal at load. One defvar before the let. - calibredb-epub-config: the jump tests stubbed calibredb while it was still an autoload, so the module's require loaded the real definition over the stub and the real command always ran. Require calibredb before any stub. - agenda-query--render: org 9.8.7 parses the priority cookie with (looking-at org-priority-regexp), whose lazy prefix swallows everything between the stars and the cookie. The fixture now has no cookie and pins that the keyword is not recognised. - prog-general-yas-activation: python-ts-mode prompts to install a missing grammar, which a batch run cannot answer. The test skips on treesit-ready-p rather than on the mode existing, and the module comment says why. - integration-recurring-events: the fixtures are America/Chicago and the assertions expect Chicago rendering, so the file only passed on a machine in Central time. TZ is pinned in setup and restored in teardown. The integration failure had been invisible since 08-17 because make test stops after a red unit phase. make test exits 0 again for the first time since then.
* fix(system-defaults): guard and cap the native-comp warning logCraig Jennings2026-07-241-0/+31
| | | | | | | | - cj/log-comp-warning is :before-until advice on display-warning. - Its append-to-file was unguarded, so an unwritable log path signalled. - That signal propagated out and broke warning display for every comp notice. - Wrapped the write so a failure is swallowed and the warning stays suppressed. - The log also grew without bound; added a 512KB cap that resets it on overflow.
* refactor: prefix two collision-prone helpers, document naming auditCraig Jennings2026-06-291-4/+4
| | | | | | Two owned helpers carried unprefixed generic names that risk colliding in the single Emacs namespace: car-member (local-repository.el) and unpropertize-kill-ring (system-defaults.el). I renamed them to localrepo--car-member and cj/--unpropertize-kill-ring and updated their callers and tests. Both are non-interactive and contained, so no alias was needed. docs/design/naming-audit.org records the rest of the scan: the allowlist of deliberate module prefixes, the foreign forward-declarations that aren't owned definitions, and a deferred list (keybound commands, the with-timer macro, the ui-theme defcustoms, the user-constants paths) that each want a focused pass rather than an unattended rename.
* perf: re-enable native-comp JIT and hand GC to gcmhCraig Jennings2026-06-201-14/+0
| | | | | | | | early-init.el disabled JIT native compilation with (setq native-comp-deferred-compilation nil), the obsolete alias of native-comp-jit-compilation. Despite the comment, setting it nil turns JIT off entirely rather than making it synchronous. Most modules then ran interpreted for the daemon's lifetime, and the native-comp-speed/jobs settings in system-defaults.el were dead. The "Selecting deleted buffer" async race that prompted the disable was an Emacs 28/29 issue. This is 30.2. I re-enabled it with native-comp-jit-compilation t and silent async warnings. GC was pinned at the stock 800KB: early-init restored it post-startup and the minibuffer setup/exit hooks bounced back to it. That's Emacs's bare-editor default, far too low for 184 packages, so GC pauses fired often during completion, agenda, and LSP/AI work. I replaced both hand-rolled mechanisms with gcmh, which keeps the threshold at 1GB during activity and collects on idle. Verified a clean full launch in a throwaway daemon (JIT on, gcmh active, no backtrace) and gcmh's threshold cycle in batch.
* test: require host-environment in system-defaults testsCraig Jennings2026-05-241-3/+7
| | | | system-defaults reads `env-bsd-p` (host-environment) and `user-home-dir` (user-constants) at load, but the module declares both only via eval-when-compile. Loading the compiled module in isolation leaves `env-bsd-p` void, so the test failed whenever it ran outside a full init. I added the host-environment require alongside the existing user-constants require so the unit loads standalone. The production fix (promoting those eval-when-compile requires to a runtime require) is Phase 2 work, recorded in the module inventory.
* fix(test): make test-name resilient to load-time cwd changesCraig Jennings2026-05-221-1/+6
| | | | | | make test-name loads every test file into one Emacs, then selects by name. test-system-defaults-functions.el requires system-defaults at load, which runs (setq default-directory user-home-dir), an intentional config choice. That leaked the cwd into the shared session, so every relative -l tests/X.el load after it resolved against the wrong directory and aborted the whole run with Error 255. I made two changes. test-name now passes absolute paths to -l so loads survive any cwd change, and the test contains the leak by let-binding default-directory around the require. The production setq stays as is.
* test(system-defaults): switch to single top-level require so undercover ↵Craig Jennings2026-05-141-90/+106
| | | | | | | | | | | | | | | | | | | | | | | | instruments The helper-functions test was per-test reloading system-defaults.el via `(load ...)' inside a `cl-letf' sandbox that stubs the side-effecting primitives (server-start, set-locale-environment, etc). Tests passed, but the coverage gauge stayed stuck at 1/12 because undercover.el only instruments the first load of a matching source; subsequent re-loads inside test bodies don't get tracked, so the function bodies showed as uncovered even though every test called them. Rewrite the test to call `(require 'system-defaults)' once at top level, wrapped in the same `cl-letf' stubs. The functions get instrumented exactly once. Drop the now-unused per-test sandbox macro. Add two more tests for the `(when (memq ...))' list-without- comp guard and the non-string-message format branch so coverage reaches 12/12. (`test-system-defaults-vc-follow-symlinks.el' still uses the per-test `(load ...)' pattern because that test *is* the load-side-effect verification, not a function-body test.)
* test(system-defaults): cover the helper functionsCraig Jennings2026-05-131-0/+155
system-defaults.el is mostly `setq` configuration, but the testable helpers (`cj/disabled`, the two minibuffer-gc hooks, `unpropertize-kill-ring`, `cj/log-comp-warning`) were uncovered. New test file mirrors the sandbox pattern from test-system-defaults-vc-follow-symlinks.el and asserts each function's observable behavior: gc-threshold flip on minibuffer entry/exit, kill-ring property strip with empty-ring boundary, comp warning written with timestamp + non-comp type ignored so the default *Warnings* path still works. 8 new tests across Normal / Boundary cases.