From a8d539023dd84de9c852fc42e3d348272deddce0 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 2 Mar 2018 10:13:20 -0800 Subject: [PATCH] Handle subdirectories existing in parsers' examples folders --- test/helpers/file_helpers.cc | 3 +++ test/helpers/read_test_entries.cc | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/test/helpers/file_helpers.cc b/test/helpers/file_helpers.cc index 354a1731..f2da6b77 100644 --- a/test/helpers/file_helpers.cc +++ b/test/helpers/file_helpers.cc @@ -25,7 +25,10 @@ int get_modified_time(const string &path) { } string read_file(const string &path) { + struct stat file_stat; + if (stat(path.c_str(), &file_stat) != 0 || (file_stat.st_mode & S_IFMT) != S_IFREG) return ""; ifstream file(path, std::ios::binary); + if (!file.good()) return ""; istreambuf_iterator file_iterator(file), end_iterator; string content(file_iterator, end_iterator); file.close(); diff --git a/test/helpers/read_test_entries.cc b/test/helpers/read_test_entries.cc index a7eb0518..f5fc5a84 100644 --- a/test/helpers/read_test_entries.cc +++ b/test/helpers/read_test_entries.cc @@ -4,6 +4,7 @@ #include #include "helpers/file_helpers.h" +using std::move; using std::regex; using std::regex_search; using std::regex_replace; @@ -95,10 +96,10 @@ vector examples_for_language(string language_name) { vector result; string examples_directory = join_path({"test", "fixtures", "grammars", language_name, "examples"}); for (string &filename : list_directory(examples_directory)) { - result.push_back({ - filename, - read_file(join_path({examples_directory, filename})) - }); + auto content = read_file(join_path({examples_directory, filename})); + if (!content.empty()) { + result.push_back({filename, move(content)}); + } } return result; }