aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-10 00:53:13 -0500
committerCraig Jennings <c@cjennings.net>2026-07-10 00:53:13 -0500
commitcb1d42de518514b3d3ee07e85c36e26e7570916e (patch)
tree79cc5e62e4056c8f0672b1636cf0e706295d91cd /tests
parent47b2e618a0547f8613784e7b25e94aed2f596f84 (diff)
downloaddotemacs-cb1d42de518514b3d3ee07e85c36e26e7570916e.tar.gz
dotemacs-cb1d42de518514b3d3ee07e85c36e26e7570916e.zip
fix(test-runner): reject a sibling dir that shares the test dir's prefix
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.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-test-runner.el19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/test-test-runner.el b/tests/test-test-runner.el
index 0ff66f7f..6854b72e 100644
--- a/tests/test-test-runner.el
+++ b/tests/test-test-runner.el
@@ -152,6 +152,25 @@ FILES is an alist of relative test filenames to file contents."
(should (eq (car result) 'not-in-testdir)))
(test-testrunner-teardown))
+(ert-deftest test-testrunner-focus-add-file-shared-prefix-sibling-rejected ()
+ "Boundary: a sibling directory sharing the test dir's name prefix is outside it.
+`/tmp/x/tests-old/f.el' starts with `/tmp/x/tests' as a string, but it is not
+in `/tmp/x/tests'. A raw `string-prefix-p' on the two truenames accepts it;
+comparing against the directory with a trailing slash rejects it."
+ (test-testrunner-setup)
+ (let* ((testdir (file-truename test-testrunner--temp-dir))
+ (sibling (concat (directory-file-name testdir) "-old"))
+ (filepath (expand-file-name "test-foo.el" sibling)))
+ (unwind-protect
+ (progn
+ (make-directory sibling t)
+ (with-temp-file filepath (insert ";; not in the test dir\n"))
+ (let ((result (cj/test--do-focus-add-file
+ filepath test-testrunner--temp-dir '())))
+ (should (eq (car result) 'not-in-testdir))))
+ (when (file-directory-p sibling) (delete-directory sibling t))))
+ (test-testrunner-teardown))
+
(ert-deftest test-testrunner-focus-add-file-already-focused ()
"Should detect already focused file."
(test-testrunner-setup)