]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* src/dir.c (dir_setup_glob): Initialize unused gl_offs.
authorPaul Smith <psmith@gnu.org>
Mon, 2 Sep 2019 15:10:56 +0000 (11:10 -0400)
committerPaul Smith <psmith@gnu.org>
Sat, 7 Sep 2019 22:27:26 +0000 (18:27 -0400)
* tests/scripts/functions/wildcard: Add trailing slash tests.
Initial changes by Dmitry Goncharov <dgoncharov@users.sf.net>

src/dir.c
tests/scripts/functions/wildcard

index 70cce50ffc254a1b921ce9778e50964debf18b8b..efa35f68b67ac98663eb3bd2292292d444da9fc6 100644 (file)
--- a/src/dir.c
+++ b/src/dir.c
@@ -1332,6 +1332,7 @@ local_lstat (const char *path, struct stat *buf)
 void
 dir_setup_glob (glob_t *gl)
 {
+  gl->gl_offs = 0;
   gl->gl_opendir = open_dirstream;
   gl->gl_readdir = read_dirstream;
   gl->gl_closedir = free;
index d324c4b3f32e62552edafc3248e26df093fca424..e47c4b387cf91fee8fb7e6c13354cfa0399a894e 100644 (file)
@@ -67,13 +67,65 @@ all: ; @echo $(wildcard xz--y*.7)
 
 touch('xxx.yyy');
 
-run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!,
-              '', "file=xxx.yyy\n");
+run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=xxx.yyy\n");
 
 unlink('xxx.yyy');
 
-run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!,
-              '', "file=\n");
+run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=\n");
+
+# TEST #7: verify that when the input pattern has a trailing slash wildcard
+# returns only directories.
+# -------
+
+touch("hellof");
+mkdir("hellod", 0770);
+mkdir("hellod/worldd", 0770);
+touch("hellod/worldf");
+mkdir("hellod/worldd/kend1", 0770);
+mkdir("hellod/worldd/kend2", 0770);
+touch("hellod/worldd/kenf1");
+touch("hellod/worldd/kenf2");
+
+run_make_test(qq!
+print3:
+\t\@echo \$(wildcard hello*)
+\t\@echo \$(wildcard hello*/)
+\t\@echo \$(wildcard hellod/world*)
+\t\@echo \$(wildcard hellod/world*/)
+\t\@echo \$(wildcard hello* hellod/world*)
+\t\@echo \$(wildcard hello*/ hellod/world*/)
+\t\@echo \$(wildcard hellod/*)
+\t\@echo \$(wildcard hellod/*/)
+\t\@echo \$(wildcard */world*)
+\t\@echo \$(wildcard */worldd/)
+\t\@echo \$(wildcard hellod/*/ken*/)
+\t\@echo \$(wildcard hellod/*/ken?[12])
+\t\@echo \$(wildcard hellod/*/ken?[12]/)
+!, '',
+              "hellod hellof\n"
+              ."hellod/\n"
+              ."hellod/worldd hellod/worldf\n"
+              ."hellod/worldd/\n"
+              ."hellod hellof hellod/worldd hellod/worldf\n"
+              ."hellod/ hellod/worldd/\n"
+              ."hellod/worldd hellod/worldf\n"
+              ."hellod/worldd/\n"
+              ."hellod/worldd hellod/worldf\n"
+              ."hellod/worldd/\n"
+              ."hellod/worldd/kend1/ hellod/worldd/kend2/\n"
+              ."hellod/worldd/kend1 hellod/worldd/kend2 "
+              ."hellod/worldd/kenf1 hellod/worldd/kenf2\n"
+              ."hellod/worldd/kend1/ hellod/worldd/kend2/\n");
+
+unlink('hellof', 'hellod/worldf', 'hellod/worldd/kenf1', 'hellod/worldd/kenf2');
+foreach $d ('hellod/worldd/kend1', 'hellod/worldd/kend2', 'hellod/worldd', 'hellod') {
+    rmdir($d);
+}
+
+if ($port_type ne 'W32') {
+    # Check wildcard on the root directory
+    run_make_test('print4: ; @echo $(wildcard /)', '', "/\n");
+}
 
 if ($port_type ne 'W32' && eval { symlink("",""); 1 }) {