From c4191d8af65e325ce8001949c0b04625f001b198 Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Wed, 6 Jan 2016 15:52:12 -0800 Subject: [PATCH] Hook the parser tests into the CMake build system. --- .gitignore | 1 + .gitmodules | 3 ++ CMakeLists.txt | 24 ++-------- external/catch | 1 + src/CMakeLists.txt | 22 ++++++++++ .../binding_context.hpp | 0 .../impl}/apple/external_commit_helper.cpp | 0 .../impl}/apple/external_commit_helper.hpp | 0 {impl => src/impl}/transact_log_handler.cpp | 0 {impl => src/impl}/transact_log_handler.hpp | 0 index_set.cpp => src/index_set.cpp | 0 index_set.hpp => src/index_set.hpp | 0 list.cpp => src/list.cpp | 0 list.hpp => src/list.hpp | 0 .../object_accessor.hpp | 0 object_schema.cpp => src/object_schema.cpp | 0 object_schema.hpp => src/object_schema.hpp | 0 object_store.cpp => src/object_store.cpp | 0 object_store.hpp => src/object_store.hpp | 0 {parser => src/parser}/parser.cpp | 0 {parser => src/parser}/parser.hpp | 0 {parser => src/parser}/query_builder.cpp | 0 {parser => src/parser}/query_builder.hpp | 0 {parser => src/parser}/test.sh | 0 property.hpp => src/property.hpp | 0 results.cpp => src/results.cpp | 0 results.hpp => src/results.hpp | 0 schema.cpp => src/schema.cpp | 0 schema.hpp => src/schema.hpp | 0 shared_realm.cpp => src/shared_realm.cpp | 0 shared_realm.hpp => src/shared_realm.hpp | 0 tests/CMakeLists.txt | 5 +++ tests/main.cpp | 2 + parser/test.cpp => tests/parser.cpp | 44 +++++-------------- parser/queryTests.json => tests/query.json | 0 35 files changed, 48 insertions(+), 54 deletions(-) create mode 160000 external/catch create mode 100644 src/CMakeLists.txt rename binding_context.hpp => src/binding_context.hpp (100%) rename {impl => src/impl}/apple/external_commit_helper.cpp (100%) rename {impl => src/impl}/apple/external_commit_helper.hpp (100%) rename {impl => src/impl}/transact_log_handler.cpp (100%) rename {impl => src/impl}/transact_log_handler.hpp (100%) rename index_set.cpp => src/index_set.cpp (100%) rename index_set.hpp => src/index_set.hpp (100%) rename list.cpp => src/list.cpp (100%) rename list.hpp => src/list.hpp (100%) rename object_accessor.hpp => src/object_accessor.hpp (100%) rename object_schema.cpp => src/object_schema.cpp (100%) rename object_schema.hpp => src/object_schema.hpp (100%) rename object_store.cpp => src/object_store.cpp (100%) rename object_store.hpp => src/object_store.hpp (100%) rename {parser => src/parser}/parser.cpp (100%) rename {parser => src/parser}/parser.hpp (100%) rename {parser => src/parser}/query_builder.cpp (100%) rename {parser => src/parser}/query_builder.hpp (100%) rename {parser => src/parser}/test.sh (100%) rename property.hpp => src/property.hpp (100%) rename results.cpp => src/results.cpp (100%) rename results.hpp => src/results.hpp (100%) rename schema.cpp => src/schema.cpp (100%) rename schema.hpp => src/schema.hpp (100%) rename shared_realm.cpp => src/shared_realm.cpp (100%) rename shared_realm.hpp => src/shared_realm.hpp (100%) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/main.cpp rename parser/test.cpp => tests/parser.cpp (72%) rename parser/queryTests.json => tests/query.json (100%) diff --git a/.gitignore b/.gitignore index c1ef0e8a..7d9b2fa3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ rules.ninja # Build products librealm-object-store.dylib +tests/tests diff --git a/.gitmodules b/.gitmodules index b7e77b91..44b8f2ab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "external/pegtl"] path = external/pegtl url = https://github.com/ColinH/PEGTL +[submodule "external/catch"] + path = external/catch + url = https://github.com/philsquared/Catch diff --git a/CMakeLists.txt b/CMakeLists.txt index 539960b7..ee79aa5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,25 +8,7 @@ include(CompilerFlags) include(RealmCore) download_realm_core(0.95.5) -include_directories(${REALM_CORE_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} impl external/pegtl) +include_directories(${REALM_CORE_INCLUDE_DIR} src external/pegtl) -set(SOURCES - index_set.cpp - list.cpp - object_schema.cpp - object_store.cpp - results.cpp - schema.cpp - shared_realm.cpp - impl/transact_log_handler.cpp - parser/parser.cpp - parser/query_builder.cpp) - -if(APPLE) - include_directories(impl/apple) - list(APPEND SOURCES impl/apple/external_commit_helper.cpp) - find_library(CF_LIBRARY CoreFoundation) -endif() - -add_library(realm-object-store SHARED ${SOURCES}) -target_link_libraries(realm-object-store realm ${CF_LIBRARY}) +add_subdirectory(src) +add_subdirectory(tests) diff --git a/external/catch b/external/catch new file mode 160000 index 00000000..f294c984 --- /dev/null +++ b/external/catch @@ -0,0 +1 @@ +Subproject commit f294c9847272b1b92c5119a6f711e57113b5f231 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..61204003 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,22 @@ +include_directories(impl) + +set(SOURCES + index_set.cpp + list.cpp + object_schema.cpp + object_store.cpp + results.cpp + schema.cpp + shared_realm.cpp + impl/transact_log_handler.cpp + parser/parser.cpp + parser/query_builder.cpp) + +if(APPLE) + include_directories(impl/apple) + list(APPEND SOURCES impl/apple/external_commit_helper.cpp) + find_library(CF_LIBRARY CoreFoundation) +endif() + +add_library(realm-object-store SHARED ${SOURCES}) +target_link_libraries(realm-object-store realm ${CF_LIBRARY}) diff --git a/binding_context.hpp b/src/binding_context.hpp similarity index 100% rename from binding_context.hpp rename to src/binding_context.hpp diff --git a/impl/apple/external_commit_helper.cpp b/src/impl/apple/external_commit_helper.cpp similarity index 100% rename from impl/apple/external_commit_helper.cpp rename to src/impl/apple/external_commit_helper.cpp diff --git a/impl/apple/external_commit_helper.hpp b/src/impl/apple/external_commit_helper.hpp similarity index 100% rename from impl/apple/external_commit_helper.hpp rename to src/impl/apple/external_commit_helper.hpp diff --git a/impl/transact_log_handler.cpp b/src/impl/transact_log_handler.cpp similarity index 100% rename from impl/transact_log_handler.cpp rename to src/impl/transact_log_handler.cpp diff --git a/impl/transact_log_handler.hpp b/src/impl/transact_log_handler.hpp similarity index 100% rename from impl/transact_log_handler.hpp rename to src/impl/transact_log_handler.hpp diff --git a/index_set.cpp b/src/index_set.cpp similarity index 100% rename from index_set.cpp rename to src/index_set.cpp diff --git a/index_set.hpp b/src/index_set.hpp similarity index 100% rename from index_set.hpp rename to src/index_set.hpp diff --git a/list.cpp b/src/list.cpp similarity index 100% rename from list.cpp rename to src/list.cpp diff --git a/list.hpp b/src/list.hpp similarity index 100% rename from list.hpp rename to src/list.hpp diff --git a/object_accessor.hpp b/src/object_accessor.hpp similarity index 100% rename from object_accessor.hpp rename to src/object_accessor.hpp diff --git a/object_schema.cpp b/src/object_schema.cpp similarity index 100% rename from object_schema.cpp rename to src/object_schema.cpp diff --git a/object_schema.hpp b/src/object_schema.hpp similarity index 100% rename from object_schema.hpp rename to src/object_schema.hpp diff --git a/object_store.cpp b/src/object_store.cpp similarity index 100% rename from object_store.cpp rename to src/object_store.cpp diff --git a/object_store.hpp b/src/object_store.hpp similarity index 100% rename from object_store.hpp rename to src/object_store.hpp diff --git a/parser/parser.cpp b/src/parser/parser.cpp similarity index 100% rename from parser/parser.cpp rename to src/parser/parser.cpp diff --git a/parser/parser.hpp b/src/parser/parser.hpp similarity index 100% rename from parser/parser.hpp rename to src/parser/parser.hpp diff --git a/parser/query_builder.cpp b/src/parser/query_builder.cpp similarity index 100% rename from parser/query_builder.cpp rename to src/parser/query_builder.cpp diff --git a/parser/query_builder.hpp b/src/parser/query_builder.hpp similarity index 100% rename from parser/query_builder.hpp rename to src/parser/query_builder.hpp diff --git a/parser/test.sh b/src/parser/test.sh similarity index 100% rename from parser/test.sh rename to src/parser/test.sh diff --git a/property.hpp b/src/property.hpp similarity index 100% rename from property.hpp rename to src/property.hpp diff --git a/results.cpp b/src/results.cpp similarity index 100% rename from results.cpp rename to src/results.cpp diff --git a/results.hpp b/src/results.hpp similarity index 100% rename from results.hpp rename to src/results.hpp diff --git a/schema.cpp b/src/schema.cpp similarity index 100% rename from schema.cpp rename to src/schema.cpp diff --git a/schema.hpp b/src/schema.hpp similarity index 100% rename from schema.hpp rename to src/schema.hpp diff --git a/shared_realm.cpp b/src/shared_realm.cpp similarity index 100% rename from shared_realm.cpp rename to src/shared_realm.cpp diff --git a/shared_realm.hpp b/src/shared_realm.hpp similarity index 100% rename from shared_realm.hpp rename to src/shared_realm.hpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 00000000..a7b20889 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,5 @@ +include_directories(../external/catch/single_include) +add_executable(tests main.cpp parser.cpp) +target_link_libraries(tests realm-object-store) + +add_custom_target(run-tests USES_TERMINAL DEPENDS tests COMMAND ./tests) diff --git a/tests/main.cpp b/tests/main.cpp new file mode 100644 index 00000000..0c7c351f --- /dev/null +++ b/tests/main.cpp @@ -0,0 +1,2 @@ +#define CATCH_CONFIG_MAIN +#include "catch.hpp" diff --git a/parser/test.cpp b/tests/parser.cpp similarity index 72% rename from parser/test.cpp rename to tests/parser.cpp index f834c505..0815d3d6 100644 --- a/parser/test.cpp +++ b/tests/parser.cpp @@ -1,10 +1,8 @@ - -#include "parser.hpp" +#include "catch.hpp" +#include "parser/parser.hpp" #include #include -#include -#include static std::vector valid_queries = { // true/false predicates @@ -131,36 +129,16 @@ static std::vector invalid_queries = { "truepredicate & truepredicate", }; -namespace realm { -namespace parser { - -bool test_grammar() -{ - bool success = true; - for (auto &query : valid_queries) { - std::cout << "valid query: " << query << std::endl; - try { - realm::parser::parse(query); - } catch (std::exception &ex) { - std::cout << "FAILURE - " << ex.what() << std::endl; - success = false; - } +TEST_CASE("valid queries") { + for (auto& query : valid_queries) { + INFO("query: " << query); + CHECK_NOTHROW(realm::parser::parse(query)); } +} - for (auto &query : invalid_queries) { - std::cout << "invalid query: " << query << std::endl; - try { - realm::parser::parse(query); - } catch (std::exception &ex) { - // std::cout << "message: " << ex.what() << std::endl; - continue; - } - std::cout << "FAILURE - query should throw an exception" << std::endl; - success = false; +TEST_CASE("invalid queries") { + for (auto& query : invalid_queries) { + INFO("query: " << query); + CHECK_THROWS(realm::parser::parse(query)); } - - return success; -} - -} } diff --git a/parser/queryTests.json b/tests/query.json similarity index 100% rename from parser/queryTests.json rename to tests/query.json