aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorGlenn Morris2012-08-28 09:01:59 -0700
committerGlenn Morris2012-08-28 09:01:59 -0700
commiteada086196ccb005ded188ac2e58d41f3682a125 (patch)
treef195bbf91841ea4e85d465307d62c709924892c2 /test
parent37b9743e79bac608a45fade0744248446aaa0a33 (diff)
parent806f0cc7302bd1dacfad8366f67a97e9bfbc8fc9 (diff)
downloademacs-eada086196ccb005ded188ac2e58d41f3682a125.tar.gz
emacs-eada086196ccb005ded188ac2e58d41f3682a125.zip
Merge from emacs-24; up to 2012-05-04T19:17:01Z!monnier@iro.umontreal.ca
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog5
-rw-r--r--test/automated/files.el139
2 files changed, 123 insertions, 21 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index c3183406ea2..f523f6f59a9 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
12012-08-28 Chong Yidong <cyd@gnu.org>
2
3 * automated/files.el: Test every combination of values for
4 enable-local-variables and enable-local-eval.
5
12012-08-19 Chong Yidong <cyd@gnu.org> 62012-08-19 Chong Yidong <cyd@gnu.org>
2 7
3 * redisplay-testsuite.el (test-redisplay): Use switch-to-buffer. 8 * redisplay-testsuite.el (test-redisplay): Use switch-to-buffer.
diff --git a/test/automated/files.el b/test/automated/files.el
index e43d8c32f85..b6011395bfd 100644
--- a/test/automated/files.el
+++ b/test/automated/files.el
@@ -21,32 +21,129 @@
21 21
22(require 'ert) 22(require 'ert)
23 23
24(defvar files-test-var1 nil) 24;; Set to t if the local variable was set, `query' if the query was
25;; triggered.
26(defvar files-test-result)
27
28(defvar files-test-safe-result)
29(put 'files-test-safe-result 'safe-local-variable 'booleanp)
25 30
26(defun files-test-fun1 () 31(defun files-test-fun1 ()
27 (setq files-test-var1 t)) 32 (setq files-test-result t))
28 33
29(ert-deftest files-test-bug12155 () 34;; Test combinations:
30 "Test for http://debbugs.gnu.org/12155 ." 35;; `enable-local-variables' t, nil, :safe, :all, or something else.
31 (with-temp-buffer 36;; `enable-local-eval' t, nil, or something else.
32 (insert "text\n" 37
33 ";; Local Variables:\n" 38(defvar files-test-local-variable-data
34 ";; eval: (files-test-fun1)\n" 39 ;; Unsafe eval form
35 ";; End:\n") 40 '((("eval: (files-test-fun1)")
36 (let ((enable-local-variables :safe) 41 (t t (eq files-test-result t))
37 (enable-local-eval 'maybe)) 42 (t nil (eq files-test-result nil))
38 (hack-local-variables) 43 (t maybe (eq files-test-result 'query))
39 (should (eq files-test-var1 nil))))) 44 (nil t (eq files-test-result nil))
45 (nil nil (eq files-test-result nil))
46 (nil maybe (eq files-test-result nil))
47 (:safe t (eq files-test-result nil))
48 (:safe nil (eq files-test-result nil))
49 (:safe maybe (eq files-test-result nil))
50 (:all t (eq files-test-result t))
51 (:all nil (eq files-test-result nil))
52 (:all maybe (eq files-test-result t)) ; This combination is ambiguous.
53 (maybe t (eq files-test-result 'query))
54 (maybe nil (eq files-test-result 'query))
55 (maybe maybe (eq files-test-result 'query)))
56 ;; Unsafe local variable value
57 (("files-test-result: t")
58 (t t (eq files-test-result 'query))
59 (t nil (eq files-test-result 'query))
60 (t maybe (eq files-test-result 'query))
61 (nil t (eq files-test-result nil))
62 (nil nil (eq files-test-result nil))
63 (nil maybe (eq files-test-result nil))
64 (:safe t (eq files-test-result nil))
65 (:safe nil (eq files-test-result nil))
66 (:safe maybe (eq files-test-result nil))
67 (:all t (eq files-test-result t))
68 (:all nil (eq files-test-result t))
69 (:all maybe (eq files-test-result t))
70 (maybe t (eq files-test-result 'query))
71 (maybe nil (eq files-test-result 'query))
72 (maybe maybe (eq files-test-result 'query)))
73 ;; Safe local variable
74 (("files-test-safe-result: t")
75 (t t (eq files-test-safe-result t))
76 (t nil (eq files-test-safe-result t))
77 (t maybe (eq files-test-safe-result t))
78 (nil t (eq files-test-safe-result nil))
79 (nil nil (eq files-test-safe-result nil))
80 (nil maybe (eq files-test-safe-result nil))
81 (:safe t (eq files-test-safe-result t))
82 (:safe nil (eq files-test-safe-result t))
83 (:safe maybe (eq files-test-safe-result t))
84 (:all t (eq files-test-safe-result t))
85 (:all nil (eq files-test-safe-result t))
86 (:all maybe (eq files-test-safe-result t))
87 (maybe t (eq files-test-result 'query))
88 (maybe nil (eq files-test-result 'query))
89 (maybe maybe (eq files-test-result 'query)))
90 ;; Safe local variable with unsafe value
91 (("files-test-safe-result: 1")
92 (t t (eq files-test-result 'query))
93 (t nil (eq files-test-result 'query))
94 (t maybe (eq files-test-result 'query))
95 (nil t (eq files-test-safe-result nil))
96 (nil nil (eq files-test-safe-result nil))
97 (nil maybe (eq files-test-safe-result nil))
98 (:safe t (eq files-test-safe-result nil))
99 (:safe nil (eq files-test-safe-result nil))
100 (:safe maybe (eq files-test-safe-result nil))
101 (:all t (eq files-test-safe-result 1))
102 (:all nil (eq files-test-safe-result 1))
103 (:all maybe (eq files-test-safe-result 1))
104 (maybe t (eq files-test-result 'query))
105 (maybe nil (eq files-test-result 'query))
106 (maybe maybe (eq files-test-result 'query))))
107 "List of file-local variable tests.
108Each list element should have the form
109
110 (LOCAL-VARS-LIST . TEST-LIST)
40 111
41(ert-deftest files-test-disable-local-variables () 112where LOCAL-VARS-LISTS should be a list of local variable
42 "Test that setting enable-local-variables to nil works." 113definitions (strings) and TEST-LIST is a list of tests to
114perform. Each entry of TEST-LIST should have the form
115
116 (ENABLE-LOCAL-VARIABLES ENABLE-LOCAL-EVAL FORM)
117
118where ENABLE-LOCAL-VARIABLES is the value to assign to
119`enable-local-variables', ENABLE-LOCAL-EVAL is the value to
120assign to `enable-local-eval', and FORM is a desired `should'
121form.")
122
123(defun file-test--do-local-variables-test (str test-settings)
43 (with-temp-buffer 124 (with-temp-buffer
44 (insert "text\n" 125 (insert str)
45 ";; Local Variables:\n" 126 (let ((enable-local-variables (nth 0 test-settings))
46 ";; files-test-var1: t\n" 127 (enable-local-eval (nth 1 test-settings))
47 ";; End:\n") 128 (files-test-result nil)
48 (let ((enable-local-variables nil)) 129 (files-test-queried nil)
130 (files-test-safe-result nil))
49 (hack-local-variables) 131 (hack-local-variables)
50 (should (eq files-test-var1 nil))))) 132 (eval (nth 2 test-settings)))))
133
134(ert-deftest files-test-local-variables ()
135 "Test the file-local variables implementation."
136 (unwind-protect
137 (progn
138 (defadvice hack-local-variables-confirm (around files-test activate)
139 (setq files-test-result 'query)
140 nil)
141 (dolist (test files-test-local-variable-data)
142 (let ((str (concat "text\n\n;; Local Variables:\n;; "
143 (mapconcat 'identity (car test) "\n;; ")
144 "\n;; End:\n")))
145 (dolist (subtest (cdr test))
146 (should (file-test--do-local-variables-test str subtest))))))
147 (ad-disable-advice 'hack-local-variables-confirm 'around 'files-test)))
51 148
52;;; files.el ends here 149;;; files.el ends here