diff --git a/ptests/ptests.ml b/ptests/ptests.ml
index 53fa1532520f800314ab31e82a4df7b00df1abb2..22e2941c10496120d9ee77a9a38a9b7bad811400 100644
--- a/ptests/ptests.ml
+++ b/ptests/ptests.ml
@@ -2031,18 +2031,22 @@ let () =
        else begin
          if not (List.mem suite exclude_suite) then begin
            let dirname = SubDir.get directory in
-           let dir_files = Sys.readdir dirname in
+           let dir_files = Array.to_list (Sys.readdir dirname) in
+           (* ignore hidden files (starting with '.' *)
+           let dir_files =
+             List.filter (fun n -> String.get n 0 <> '.') dir_files
+           in
            if !verbosity >= 2 then
              lock_printf "%% - Look at %d entries of the directory %S ...@."
-               (Array.length dir_files) dirname;
-           for i = 0 to pred (Array.length dir_files) do
-             let file = dir_files.(i) in
-             assert (Filename.is_relative file);
-             if test_pattern dir_config file &&
-                (not (List.mem (SubDir.make_file directory file) exclude_file))
-             then
-               Queue.push (file, directory, dir_config) files;
-           done
+               (List.length dir_files) dirname;
+           List.iter
+             (fun file ->
+                assert (Filename.is_relative file);
+                if test_pattern dir_config file &&
+                   (not (List.mem (SubDir.make_file directory file) exclude_file))
+                then
+                  Queue.push (file, directory, dir_config) files;
+             ) dir_files
          end
        end)
     suites