aboutsummaryrefslogtreecommitdiff
path: root/lib/mstch/test/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mstch/test/CMakeLists.txt')
-rw-r--r--lib/mstch/test/CMakeLists.txt59
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/mstch/test/CMakeLists.txt b/lib/mstch/test/CMakeLists.txt
new file mode 100644
index 0000000..061bc2e
--- /dev/null
+++ b/lib/mstch/test/CMakeLists.txt
@@ -0,0 +1,59 @@
+find_package(Boost 1.54 REQUIRED)
+
+include_directories(
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_SOURCE_DIR}/vendor/Catch/single_include
+ ${CMAKE_SOURCE_DIR}/vendor/rapidjson/include
+ ${Boost_INCLUDE_DIR})
+
+file(GLOB data_files RELATIVE
+ "${CMAKE_SOURCE_DIR}/test/data"
+ "${CMAKE_SOURCE_DIR}/test/data/*.hpp")
+
+foreach(data_file ${data_files})
+ string(REGEX REPLACE "\\.hpp" "" test_name "${data_file}")
+ list(APPEND tests "${test_name}")
+endforeach(data_file)
+
+file(GLOB string_files RELATIVE
+ "${CMAKE_SOURCE_DIR}/test/data"
+ "${CMAKE_SOURCE_DIR}/test/data/*.mustache"
+ "${CMAKE_SOURCE_DIR}/test/data/*.txt"
+ "${CMAKE_SOURCE_DIR}/test/data/*.partial")
+
+foreach(string_file ${string_files})
+ list(APPEND genargs "-i${string_file}")
+endforeach(string_file)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/test_data.hpp
+ COMMAND headerize --output ${CMAKE_CURRENT_BINARY_DIR}/test_data.hpp --namespace mstchtest ${genargs}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test/data/)
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/test_data.hpp PROPERTIES GENERATED TRUE)
+add_custom_target(test_data_hpp DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/test_data.hpp)
+
+file(GLOB specs_files RELATIVE
+ "${CMAKE_SOURCE_DIR}/vendor/spec/specs"
+ "${CMAKE_SOURCE_DIR}/vendor/spec/specs/*.json")
+
+foreach(specs_file ${specs_files})
+ list(APPEND specsargs "-i${specs_file}")
+ string(REGEX REPLACE "\\.json" "" test_name "${specs_file}")
+ string(REGEX REPLACE "~" "" test_name "${test_name}")
+ list(APPEND tests "specs_${test_name}")
+endforeach(specs_file)
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/specs_data.hpp
+ COMMAND headerize --output ${CMAKE_CURRENT_BINARY_DIR}/specs_data.hpp --namespace mstchtest ${specsargs}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/vendor/spec/specs/)
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/specs_data.hpp PROPERTIES GENERATED TRUE)
+add_custom_target(specs_data_hpp DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/specs_data.hpp)
+
+add_executable(mstch_test test_main.cpp)
+target_link_libraries(mstch_test mstch)
+add_dependencies(mstch_test test_data_hpp specs_data_hpp)
+
+foreach(test ${tests})
+ add_test(NAME ${test} COMMAND mstch_test ${test})
+endforeach(test)