aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMichael Albinus2018-01-31 15:02:46 +0100
committerMichael Albinus2018-01-31 15:02:46 +0100
commit84d066a73fc4191a675c87c81ec1a4f531375e95 (patch)
tree8afdbd551f972a149e69c999f9f0e088994cf229 /test
parent843f3d4f34c2f54fac19d97c32399671f98ccc51 (diff)
downloademacs-84d066a73fc4191a675c87c81ec1a4f531375e95.tar.gz
emacs-84d066a73fc4191a675c87c81ec1a4f531375e95.zip
Fix Bug#30293
* lisp/net/tramp-archive.el (tramp-archive-file-name-for-operation): New defsubst. (tramp-archive-file-name-archive, tramp-archive-file-name-localname): New defuns. (tramp-archive-file-name-handler, tramp-archive-dissect-file-name) (tramp-archive-handle-not-implemented): Use them. (Bug#30293) * test/lisp/net/tramp-archive-tests.el (tramp-archive-test-directory): New defconst. (tramp-archive-test01-file-name-syntax): Extend test. (tramp-archive-test05-expand-file-name-non-archive-directory): New test. (Bug#30293) * test/lisp/net/tramp-archive-resources/foo.iso/foo: New file.
Diffstat (limited to 'test')
-rw-r--r--test/lisp/net/tramp-archive-resources/foo.iso/foo1
-rw-r--r--test/lisp/net/tramp-archive-tests.el59
2 files changed, 59 insertions, 1 deletions
diff --git a/test/lisp/net/tramp-archive-resources/foo.iso/foo b/test/lisp/net/tramp-archive-resources/foo.iso/foo
new file mode 100644
index 00000000000..257cc5642cb
--- /dev/null
+++ b/test/lisp/net/tramp-archive-resources/foo.iso/foo
@@ -0,0 +1 @@
foo
diff --git a/test/lisp/net/tramp-archive-tests.el b/test/lisp/net/tramp-archive-tests.el
index ecfee0c556c..96c6a71097c 100644
--- a/test/lisp/net/tramp-archive-tests.el
+++ b/test/lisp/net/tramp-archive-tests.el
@@ -46,6 +46,11 @@
46 (file-name-as-directory tramp-archive-test-file-archive) 46 (file-name-as-directory tramp-archive-test-file-archive)
47 "The test archive.") 47 "The test archive.")
48 48
49(defconst tramp-archive-test-directory
50 (file-truename
51 (expand-file-name "foo.iso" tramp-archive-test-resource-directory))
52 "A directory file name, which looks like an archive.")
53
49(setq password-cache-expiry nil 54(setq password-cache-expiry nil
50 tramp-verbose 0 55 tramp-verbose 0
51 tramp-cache-read-persistent-data t ;; For auth-sources. 56 tramp-cache-read-persistent-data t ;; For auth-sources.
@@ -94,14 +99,51 @@ variables, so we check the Emacs version directly."
94 "Check archive file name syntax." 99 "Check archive file name syntax."
95 (should-not (tramp-archive-file-name-p tramp-archive-test-file-archive)) 100 (should-not (tramp-archive-file-name-p tramp-archive-test-file-archive))
96 (should (tramp-archive-file-name-p tramp-archive-test-archive)) 101 (should (tramp-archive-file-name-p tramp-archive-test-archive))
102 (should
103 (string-equal
104 (tramp-archive-file-name-archive tramp-archive-test-archive)
105 tramp-archive-test-file-archive))
106 (should
107 (string-equal
108 (tramp-archive-file-name-localname tramp-archive-test-archive) "/"))
97 (should (tramp-archive-file-name-p (concat tramp-archive-test-archive "foo"))) 109 (should (tramp-archive-file-name-p (concat tramp-archive-test-archive "foo")))
98 (should 110 (should
111 (string-equal
112 (tramp-archive-file-name-localname
113 (concat tramp-archive-test-archive "foo"))
114 "/foo"))
115 (should
99 (tramp-archive-file-name-p (concat tramp-archive-test-archive "foo/bar"))) 116 (tramp-archive-file-name-p (concat tramp-archive-test-archive "foo/bar")))
117 (should
118 (string-equal
119 (tramp-archive-file-name-localname
120 (concat tramp-archive-test-archive "foo/bar"))
121 "/foo/bar"))
100 ;; A file archive inside a file archive. 122 ;; A file archive inside a file archive.
101 (should 123 (should
102 (tramp-archive-file-name-p (concat tramp-archive-test-archive "baz.tar"))) 124 (tramp-archive-file-name-p (concat tramp-archive-test-archive "baz.tar")))
103 (should 125 (should
104 (tramp-archive-file-name-p (concat tramp-archive-test-archive "baz.tar/")))) 126 (string-equal
127 (tramp-archive-file-name-archive
128 (concat tramp-archive-test-archive "baz.tar"))
129 tramp-archive-test-file-archive))
130 (should
131 (string-equal
132 (tramp-archive-file-name-localname
133 (concat tramp-archive-test-archive "baz.tar"))
134 "/baz.tar"))
135 (should
136 (tramp-archive-file-name-p (concat tramp-archive-test-archive "baz.tar/")))
137 (should
138 (string-equal
139 (tramp-archive-file-name-archive
140 (concat tramp-archive-test-archive "baz.tar/"))
141 (concat tramp-archive-test-archive "baz.tar")))
142 (should
143 (string-equal
144 (tramp-archive-file-name-localname
145 (concat tramp-archive-test-archive "baz.tar/"))
146 "/")))
105 147
106(ert-deftest tramp-archive-test02-file-name-dissect () 148(ert-deftest tramp-archive-test02-file-name-dissect ()
107 "Check archive file name components." 149 "Check archive file name components."
@@ -205,6 +247,21 @@ variables, so we check the Emacs version directly."
205 (should (string-equal (expand-file-name "/foo.tar/./file") "/foo.tar/file")) 247 (should (string-equal (expand-file-name "/foo.tar/./file") "/foo.tar/file"))
206 (should (string-equal (expand-file-name "/foo.tar/../file") "/file"))) 248 (should (string-equal (expand-file-name "/foo.tar/../file") "/file")))
207 249
250;; This test is inspired by Bug#30293.
251(ert-deftest tramp-archive-test05-expand-file-name-non-archive-directory ()
252 "Check existing directories with archive file name syntax.
253They shall still be supported"
254 (should (file-directory-p tramp-archive-test-directory))
255 ;; `tramp-archive-file-name-p' tests only for file name syntax. It
256 ;; doesn't test, whether it is really a file archive.
257 (should
258 (tramp-archive-file-name-p
259 (file-name-as-directory tramp-archive-test-directory)))
260 (should
261 (file-directory-p (file-name-as-directory tramp-archive-test-directory)))
262 (should
263 (file-exists-p (expand-file-name "foo" tramp-archive-test-directory))))
264
208(ert-deftest tramp-archive-test06-directory-file-name () 265(ert-deftest tramp-archive-test06-directory-file-name ()
209 "Check `directory-file-name'. 266 "Check `directory-file-name'.
210This checks also `file-name-as-directory', `file-name-directory', 267This checks also `file-name-as-directory', `file-name-directory',