From e3575ee4b2fc8e74238dcc710c569885e1eef937 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 26 Jul 2019 09:46:18 -0700 Subject: [PATCH] Fix recently-introduced file-name-absolute-p typo 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 | 3 ++- test/src/fileio-tests.el | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index d1a7f39ac95..968a55e5956 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -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])))); } DEFUN ("file-exists-p", Ffile_exists_p, Sfile_exists_p, 1, 1, 0, diff --git a/test/src/fileio-tests.el b/test/src/fileio-tests.el index 09a5b147e1d..98d3d6be763 100644 --- a/test/src/fileio-tests.el +++ b/test/src/fileio-tests.el @@ -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))))))) -- 2.39.2