| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
cj/test--do-focus-add-file tested containment with a bare string-prefix-p on two truenames, so tests-old/foo.el passed as being inside tests/ and joined the focus list.
The correct helper was already there. cj/test--file-in-directory-p wraps the directory in file-name-as-directory first, and the other two call sites already used it. This one didn't.
The helper even had a sibling-rejection test. It was proven correct while the call site two hundred lines away never called it, which is why the new test drives the real focus-add path with a tests-old/ directory on disk rather than testing the helper again.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
`test-runner.el` stored `cj/test-focused-files` and `cj/test-mode` in single global variables. ERT tests loaded by `cj/test-load-all` accumulated in the same global registry across projects. Switching projects inherited the previous project's focused files and mode. `cj/test-run-all` then ran every loaded ERT test from every project visited this session.
I introduced a per-project state hash, `cj/test-project-states`, keyed by Projectile project root (or `default-directory` when not in a project). New helpers `cj/test--state-get` and `cj/test--state-put` route each read and write through that hash, so the focused-files list and the all/focused mode now live per project. The legacy public variables `cj/test-focused-files` and `cj/test-mode` are kept. They mirror the active project's state via `cj/test--sync-legacy-state` so existing modeline indicators and external code keep working.
I also tracked which project roots had loaded tests (`cj/test-loaded-project-roots`) and added two ERT-isolation helpers. `cj/test--current-project-test-names` filters ERT's full registry to tests whose source file lives under the current project root. `cj/ert-clear-tests` deletes ERT tests loaded from other known project roots, so a fresh project starts with only its own tests. `cj/test-run-all` now uses the filtered name list, and a `projectile-after-switch-project-hook` clears foreign tests automatically when you switch projects.
I added four regression tests to `tests/test-test-runner.el`: focus state isolated per project, mode isolated per project, `cj/ert-clear-tests` keeps the current project's tests and removes others, and `cj/test--current-project-test-names` returns only the current project's tests. Each test creates throwaway projects under the test temp dir and stubs `projectile-project-root` to switch contexts.
33 test-runner tests pass together.
|
| |
|
|
| |
This reverts commit d36afc3f277b9a4228eb7b2464ec4e503695b8d4.
|
| | |
|
|
|
Add comprehensive documentation and workflow details for the ERT
test runner, including integration with Projectile projects for
automatic test discovery.
Refactor code to support focus/unfocus workflows, allowing
developers to efficiently manage test execution by focusing on
specific test files.
Introduce internal utility functions `cj/test--do-*` to modularize
logic for file operations and focus management, improving code
maintainability.
Add new tests in `test-test-runner.el` to validate the enhanced
functionality, ensuring robust handling of focus operations and test
execution scenarios.
|