diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index aae70b160c7f72b72ecd84dbf0ab06898a5b4edf..dcb79f7dd221ea8ddfcdf19e2e3f452307933e3a 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -777,7 +777,7 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
     this->Makefile->GetCMakeInstance()->GetWorkingMode();
   while (i != args.end()) {
     if (*i == "LIST_DIRECTORIES") {
-      ++i;
+      ++i; // skip LIST_DIRECTORIES
       if (i != args.end()) {
         if (cmSystemTools::IsOn(i->c_str())) {
           g.SetListDirs(true);
@@ -789,27 +789,21 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
           this->SetError("LIST_DIRECTORIES missing bool value.");
           return false;
         }
+        ++i;
       } else {
         this->SetError("LIST_DIRECTORIES missing bool value.");
         return false;
       }
-      ++i;
-      if (i == args.end()) {
-        this->SetError("GLOB requires a glob expression after the bool.");
-        return false;
-      }
     } else if (*i == "FOLLOW_SYMLINKS") {
-      if (!recurse) {
-        this->SetError("FOLLOW_SYMLINKS is not a valid parameter for GLOB.");
-        return false;
-      }
-      explicitFollowSymlinks = true;
-      g.RecurseThroughSymlinksOn();
-      ++i;
-      if (i == args.end()) {
-        this->SetError(
-          "GLOB_RECURSE requires a glob expression after FOLLOW_SYMLINKS.");
-        return false;
+      ++i; // skip FOLLOW_SYMLINKS
+      if (recurse) {
+        explicitFollowSymlinks = true;
+        g.RecurseThroughSymlinksOn();
+        if (i == args.end()) {
+          this->SetError(
+            "GLOB_RECURSE requires a glob expression after FOLLOW_SYMLINKS.");
+          return false;
+        }
       }
     } else if (*i == "RELATIVE") {
       ++i; // skip RELATIVE
diff --git a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt b/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt
deleted file mode 100644
index d00491fd7e5bb6fa28c517a0bb32b8b506539d4d..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt b/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt
deleted file mode 100644
index af3cb2e5a34538c00b3b6292c027dd7e888aa0ec..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-^CMake Error at GLOB-error-FOLLOW_SYMLINKS\.cmake:[0-9]+ \(file\):
-  file FOLLOW_SYMLINKS is not a valid parameter for GLOB\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:[0-9]+ \(include\)$
diff --git a/Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake b/Tests/RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake
similarity index 100%
rename from Tests/RunCMake/file/GLOB-error-FOLLOW_SYMLINKS.cmake
rename to Tests/RunCMake/file/GLOB-noexp-FOLLOW_SYMLINKS.cmake
diff --git a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt b/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt
deleted file mode 100644
index d00491fd7e5bb6fa28c517a0bb32b8b506539d4d..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt b/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt
deleted file mode 100644
index ee6cb0b58b21dd8a1e3e4c7d99c7621549e6a458..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/file/GLOB-noexp-LIST_DIRECTORIES-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-^CMake Error at GLOB-noexp-LIST_DIRECTORIES\.cmake:[0-9]+ \(file\):
-  file GLOB requires a glob expression after the bool\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:[0-9]+ \(include\)$
diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake
index 342606b44554c0d881e500630779a451d605a20a..b3832301a8a1941a2a0dc6d45d09d716bd2d307f 100644
--- a/Tests/RunCMake/file/RunCMakeTest.cmake
+++ b/Tests/RunCMake/file/RunCMakeTest.cmake
@@ -39,12 +39,12 @@ run_cmake(GLOB_RECURSE-noexp-FOLLOW_SYMLINKS)
 
 # tests are valid both for GLOB and GLOB_RECURSE
 run_cmake(GLOB-sort-dedup)
-run_cmake(GLOB-error-FOLLOW_SYMLINKS)
 run_cmake(GLOB-error-LIST_DIRECTORIES-not-boolean)
 run_cmake(GLOB-error-LIST_DIRECTORIES-no-arg)
 run_cmake(GLOB-error-RELATIVE-no-arg)
 run_cmake(GLOB-error-CONFIGURE_DEPENDS-modified)
 run_cmake(GLOB-noexp-CONFIGURE_DEPENDS)
+run_cmake(GLOB-noexp-FOLLOW_SYMLINKS)
 run_cmake(GLOB-noexp-LIST_DIRECTORIES)
 run_cmake(GLOB-noexp-RELATIVE)
 run_cmake_command(GLOB-error-CONFIGURE_DEPENDS-SCRIPT_MODE ${CMAKE_COMMAND} -P