From b922196e4fa8c46b027b6f91c841ec610a2c83b8 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Wed, 4 Mar 2026 21:35:26 +0200 Subject: Add tests for round 4 codebase fixes - Test projectile-ignored-project-p truename normalization - Test projectile-determine-find-tag-fn fallback behavior - Update projectile-files-via-ext-command test for empty string guard --- test/projectile-test.el | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/test/projectile-test.el b/test/projectile-test.el index 39f577d..842eb3a 100644 --- a/test/projectile-test.el +++ b/test/projectile-test.el @@ -643,8 +643,8 @@ Just delegates OPERATION and ARGS for all operations except for`shell-command`'. (describe "projectile-files-via-ext-command" (it "returns nil when command is nil or empty or fails" - (expect (projectile-files-via-ext-command "" "") :not :to-be-truthy) - (expect (projectile-files-via-ext-command "" nil) :not :to-be-truthy) + (expect (projectile-files-via-ext-command "/" "") :not :to-be-truthy) + (expect (projectile-files-via-ext-command "/" nil) :not :to-be-truthy) (expect (projectile-files-via-ext-command "" "echo Not a file name! > &2") :not :to-be-truthy) (expect (projectile-files-via-ext-command "" "echo filename") :to-equal '("filename"))) @@ -655,6 +655,30 @@ Just delegates OPERATION and ARGS for all operations except for`shell-command`'. (expect (projectile-files-via-ext-command "" "printf './foo\\0./bar/baz\\0quux'") :to-equal '("foo" "bar/baz" "quux")))) +(describe "projectile-ignored-project-p" + (it "matches abbreviated paths against truename-resolved ignored list" + (let ((projectile-ignored-projects (list default-directory))) + (spy-on 'file-truename :and-call-fake + (lambda (f) (expand-file-name f))) + (expect (projectile-ignored-project-p + (abbreviate-file-name default-directory)) + :to-be-truthy))) + (it "returns nil for non-ignored projects" + (let ((projectile-ignored-projects '("/some/other/project/"))) + (expect (projectile-ignored-project-p "/my/project/") + :not :to-be-truthy)))) + +(describe "projectile-determine-find-tag-fn" + (it "falls back to xref-find-definitions when ggtags backend is unavailable" + (let ((projectile-tags-backend 'ggtags)) + (expect (projectile-determine-find-tag-fn) :to-equal 'xref-find-definitions))) + (it "falls back to xref-find-definitions when etags-select backend is unavailable" + (let ((projectile-tags-backend 'etags-select)) + (expect (projectile-determine-find-tag-fn) :to-equal 'xref-find-definitions))) + (it "returns xref-find-definitions for auto backend without ggtags" + (let ((projectile-tags-backend 'auto)) + (expect (projectile-determine-find-tag-fn) :to-equal 'xref-find-definitions)))) + (describe "projectile-mode" (before-each (spy-on 'projectile--cleanup-known-projects) -- cgit v1.0