blob: 55cafe00f7f34685b78f6559654007e7e6451349 (
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
46
47
48
|
;;; test-testutil-general.el --- Tests for shared test utilities -*- lexical-binding: t; -*-
;;; Commentary:
;; Verifies shared test scratch paths are sandbox-friendly and guarded.
;;; Code:
(require 'ert)
(add-to-list 'load-path (expand-file-name "tests" user-emacs-directory))
(require 'testutil-general)
(ert-deftest test-testutil-general-default-base-dir-is-under-temp ()
"The default test root should not require home-directory write access."
(skip-unless (not (getenv "CJ_EMACS_TEST_DIR")))
(should (file-in-directory-p cj/test-base-dir temporary-file-directory)))
(ert-deftest test-testutil-general-env-override-shape ()
"A stable local test root can still be supplied via environment variable."
(let ((process-environment
(cons "CJ_EMACS_TEST_DIR=/tmp/cj-custom-test-root" process-environment)))
(should (equal
(file-name-as-directory
(expand-file-name
(or (getenv "CJ_EMACS_TEST_DIR")
(expand-file-name "cj-emacs-tests/" temporary-file-directory))))
"/tmp/cj-custom-test-root/"))))
(ert-deftest test-testutil-general-create-file-rejects-parent-escape ()
"Relative paths must not escape the selected test root."
(let ((cj/test-base-dir (make-temp-file "testutil-base-" t)))
(should-error
(cj/create-directory-or-file-ensuring-parents "../escape.txt" "bad"))))
(ert-deftest test-testutil-general-delete-refuses-temp-root ()
"Cleanup must refuse broad roots such as `temporary-file-directory'."
(let ((cj/test-base-dir temporary-file-directory))
(should-error (cj/delete-test-base-dir))))
(ert-deftest test-testutil-general-delete-removes-selected-root ()
"Cleanup should remove a specific selected test root."
(let ((cj/test-base-dir (make-temp-file "testutil-delete-" t)))
(cj/create-directory-or-file-ensuring-parents "nested/file.txt" "ok")
(should (file-directory-p cj/test-base-dir))
(cj/delete-test-base-dir)
(should-not (file-exists-p cj/test-base-dir))))
(provide 'test-testutil-general)
;;; test-testutil-general.el ends here
|