summaryrefslogtreecommitdiff
path: root/tests/test-fs-validate-path.el
blob: 011789e098efaaf475f98436ea352414c0a894ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
;;; test-tool-library-cj/fs-validate-path.el --- ERT tests for cj/fs-validate-path -*- lexical-binding: t; -*-

;; Author: gptel-tool-writer and cjennings
;; Keywords: tests, filesystem, tools

;;; Commentary:
;; ERT tests for the cj/fs-validate-path function from tool-filesystem-library.el.
;; Place this file in ~/.emacs.d/tests/ and load it to run tests.

;;; Code:

(require 'ert)
(require 'f)
(require 'tool-filesystem-library)

(ert-deftest test-cj/fs-validate-path-normal-home ()
  "Normal: validate home directory path."
  (should (string-prefix-p (expand-file-name "~")
						   (cj/fs-validate-path "~"))))

(ert-deftest test-cj/fs-validate-path-normal-temp ()
  "Normal: validate temp directory path."
  (let ((temp (expand-file-name temporary-file-directory)))
	(should (string-prefix-p temp (cj/fs-validate-path temp)))))

(ert-deftest test-cj/fs-validate-path-error-outside ()
  "Error: path outside allowed directories."
  (should-error (cj/fs-validate-path "/etc/passwd")))

(ert-deftest test-cj/fs-validate-path-error-nonexistent ()
  "Error: non-existent path."
  (should-error (cj/fs-validate-path (format "/tmp/nonexistent-%d" (random 100000)))))

(ert-deftest test-cj/fs-validate-path-error-unreadable ()
  "Error: unreadable path."
  (let ((file (make-temp-file "test-unreadable")))
	(unwind-protect
		(progn
		  (set-file-modes file 0)
		  (should-error (cj/fs-validate-path file)))
	  (set-file-modes file #o644)
	  (delete-file file))))

(provide 'test-tool-library-cj/fs-validate-path)
;;; test-tool-library-cj/fs-validate-path.el ends here