]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix recently-introduced file-name-absolute-p typo
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 26 Jul 2019 16:46:18 +0000 (09:46 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 26 Jul 2019 16:48:57 +0000 (09:48 -0700)
Fix a bug introduced in 2019-07-24T21:28:13!eggert@cs.ucla.edu.
* src/fileio.c (file_name_absolute_p):
~/foo is also absolute (Bug#36809).
* test/src/fileio-tests.el (fileio-tests--file-name-absolute-p):
Rename from fileio-tests--no-such-user and add more tests.

src/fileio.c
test/src/fileio-tests.el

index d1a7f39ac9520303c7ab029f82e42252933e0700..968a55e595615599d4f85890568523ac866fcac9 100644 (file)
@@ -2690,7 +2690,8 @@ file_name_absolute_p (char const *filename)
 {
   return (IS_ABSOLUTE_FILE_NAME (filename)
          || (filename[0] == '~'
-             && (!filename[1] || user_homedir (&filename[1]))));
+             && (!filename[1] || IS_DIRECTORY_SEP (filename[1])
+                 || user_homedir (&filename[1]))));
 }
 \f
 DEFUN ("file-exists-p", Ffile_exists_p, Sfile_exists_p, 1, 1, 0,
index 09a5b147e1de3ca6355373bfdf4a308ea6c2ed95..98d3d6be763f27f6d3862ef025b41c4a4899e171 100644 (file)
@@ -137,13 +137,13 @@ Also check that an encoding error can appear in a symlink."
     (should (and (file-name-absolute-p name)
                  (not (eq (aref name 0) ?~))))))
 
-(ert-deftest fileio-tests--no-such-user ()
-  "Test file-name-absolute-p on ~nosuchuser."
-  (unless (user-full-name "nosuchuser")
-    (should (not (file-name-absolute-p "~nosuchuser")))
-    (should (not (file-name-absolute-p "~nosuchuser/")))
-    (should (not (file-name-absolute-p "~nosuchuser//")))
-    (should (not (file-name-absolute-p "~nosuchuser/foo")))
-    (should (not (file-name-absolute-p "~nosuchuser/foo/")))
-    (should (not (file-name-absolute-p "~nosuchuser/foo//")))
-    (should (not (file-name-absolute-p "~nosuchuser/foo/bar")))))
+(ert-deftest fileio-tests--file-name-absolute-p ()
+  "Test file-name-absolute-p."
+  (dolist (suffix '("" "/" "//" "/foo" "/foo/" "/foo//" "/foo/bar"))
+    (unless (string-equal suffix "")
+      (should (file-name-absolute-p suffix)))
+    (should (file-name-absolute-p (concat "~" suffix)))
+    (when (user-full-name user-login-name)
+      (should (file-name-absolute-p (concat "~" user-login-name suffix))))
+    (unless (user-full-name "nosuchuser")
+      (should (not (file-name-absolute-p (concat "~nosuchuser" suffix)))))))