summaryrefslogtreecommitdiff
path: root/tests/test-gptel-tools-git-diff.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-gptel-tools-git-diff.el')
-rw-r--r--tests/test-gptel-tools-git-diff.el26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/test-gptel-tools-git-diff.el b/tests/test-gptel-tools-git-diff.el
index 59666a32..114fec29 100644
--- a/tests/test-gptel-tools-git-diff.el
+++ b/tests/test-gptel-tools-git-diff.el
@@ -102,6 +102,26 @@
(should-error (cj/gptel-git-diff--validate-path dir))
(when (file-exists-p dir) (delete-directory dir t)))))
+(ert-deftest test-gptel-tools-git-diff-validate-path-error-not-a-directory ()
+ "Error: file paths are rejected."
+ (let ((file (make-temp-file
+ (expand-file-name ".test-gptel-tools-git-diff-file-" "~"))))
+ (unwind-protect
+ (should-error (cj/gptel-git-diff--validate-path file))
+ (when (file-exists-p file) (delete-file file)))))
+
+(ert-deftest test-gptel-tools-git-diff-validate-path-error-symlink-outside-home ()
+ "Error: symlinked directories resolving outside HOME are rejected."
+ (let ((link (expand-file-name
+ (format ".test-gptel-tools-git-diff-link-%s"
+ (format-time-string "%s%N"))
+ "~")))
+ (unwind-protect
+ (progn
+ (make-symbolic-link "/tmp" link t)
+ (should-error (cj/gptel-git-diff--validate-path link)))
+ (when (file-symlink-p link) (delete-file link)))))
+
;; ---------- run
(ert-deftest test-gptel-tools-git-diff-run-no-changes ()
@@ -133,5 +153,11 @@
(should (string-match-p "f.txt" out))
(should-not (string-match-p "g.txt" out))))))
+(ert-deftest test-gptel-tools-git-diff-run-error-on-bad-ref ()
+ "Error: git diff exits other than 0/1 are surfaced."
+ (test-gptel-tools-git-diff--with-repo
+ (lambda (dir)
+ (should-error (cj/gptel-git-diff--run dir "does-not-exist")))))
+
(provide 'test-gptel-tools-git-diff)
;;; test-gptel-tools-git-diff.el ends here