diff options
| author | Michael Albinus | 2018-01-31 15:02:46 +0100 |
|---|---|---|
| committer | Michael Albinus | 2018-01-31 15:02:46 +0100 |
| commit | 84d066a73fc4191a675c87c81ec1a4f531375e95 (patch) | |
| tree | 8afdbd551f972a149e69c999f9f0e088994cf229 /test | |
| parent | 843f3d4f34c2f54fac19d97c32399671f98ccc51 (diff) | |
| download | emacs-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/foo | 1 | ||||
| -rw-r--r-- | test/lisp/net/tramp-archive-tests.el | 59 |
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. | ||
| 253 | They 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'. |
| 210 | This checks also `file-name-as-directory', `file-name-directory', | 267 | This checks also `file-name-as-directory', `file-name-directory', |