summaryrefslogtreecommitdiff
path: root/test/src/fileio-tests.el
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/fileio-tests.el')
-rw-r--r--test/src/fileio-tests.el42
1 files changed, 39 insertions, 3 deletions
diff --git a/test/src/fileio-tests.el b/test/src/fileio-tests.el
index 96b03a01372..bedda83bbdb 100644
--- a/test/src/fileio-tests.el
+++ b/test/src/fileio-tests.el
@@ -98,15 +98,51 @@ Also check that an encoding error can appear in a symlink."
(ert-deftest fileio-tests--relative-HOME ()
"Test that expand-file-name works even when HOME is relative."
- (let ((old-home (getenv "HOME")))
+ (let ((process-environment (copy-sequence process-environment)))
(setenv "HOME" "a/b/c")
(should (equal (expand-file-name "~/foo")
(expand-file-name "a/b/c/foo")))
(when (memq system-type '(ms-dos windows-nt))
;; Test expansion of drive-relative file names.
(setenv "HOME" "x:foo")
- (should (equal (expand-file-name "~/bar") "x:/foo/bar")))
- (setenv "HOME" old-home)))
+ (should (equal (expand-file-name "~/bar") "x:/foo/bar")))))
+
+(ert-deftest fileio-tests--HOME-trailing-slash ()
+ "Test that expand-file-name of \"~\" respects trailing slash."
+ :expected-result (if (memq system-type '(windows-nt ms-dos))
+ :failed
+ :passed)
+ (let ((process-environment (copy-sequence process-environment)))
+ (dolist (home
+ (if (memq system-type '(windows-nt ms-dos))
+ '("c:/a/b/c" "c:/a/b/c/")
+ '("/a/b/c" "/a/b/c/")))
+ (setenv "HOME" home)
+ (should (equal (expand-file-name "~") (expand-file-name home))))))
+
+(ert-deftest fileio-tests--expand-file-name-trailing-slash ()
+ (dolist (fooslashalias '("foo/" "foo//" "foo/." "foo//." "foo///././."
+ "foo/a/.."))
+ (if (memq system-type '(windows-nt ms-dos))
+ (progn
+ (should (equal (expand-file-name fooslashalias "c:/") "c:/foo/"))
+ (should (equal (expand-file-name (concat "c:/" fooslashalias))
+ "c:/foo/"))
+ (should (equal (expand-file-name "." "c:/usr/spool/")
+ "c:/usr/spool/"))
+ (should (equal (expand-file-name "" "c:/usr/spool/")
+ "c:/usr/spool/")))
+ (should (equal (expand-file-name fooslashalias "/") "/foo/"))
+ (should (equal (expand-file-name (concat "/" fooslashalias)) "/foo/"))
+ (should (equal (expand-file-name "." "/usr/spool/") "/usr/spool/"))
+ (should (equal (expand-file-name "" "/usr/spool/") "/usr/spool/"))))
+ ;; Trailing "B/C/.." means B must be a directory.
+ (if (memq system-type '(windows-nt ms-dos))
+ (progn
+ (should (equal (expand-file-name "c:/a/b/c/..") "c:/a/b/"))
+ (should (equal (expand-file-name "c:/a/b/c/../") "c:/a/b/")))
+ (should (equal (expand-file-name "/a/b/c/..") "/a/b/"))
+ (should (equal (expand-file-name "/a/b/c/../") "/a/b/"))))
(ert-deftest fileio-tests--insert-file-interrupt ()
(let ((text "-*- coding: binary -*-\n\xc3\xc3help")