diff --git a/CMakeLists.txt b/CMakeLists.txt index fbf0331..66fe392 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,8 @@ find_path(JSON_SCHEMA_TEST_SUITE_PATH NAMES tests/draft4) +set(JSON_SCHEMA_TEST_PREFIX "JSON-Suite" CACHE STRING "prefix for JSON-tests added to ctest") + if(JSON_SCHEMA_TEST_SUITE_PATH) # json-schema-validator-tester add_executable(json-schema-test app/json-schema-test.cpp) @@ -62,17 +64,30 @@ if(JSON_SCHEMA_TEST_SUITE_PATH) PRIVATE JSON_SCHEMA_TEST_SUITE_PATH="${JSON_SCHEMA_TEST_SUITE_PATH}") + option(JSON_SCHEMA_ENABLE_OPTIONAL_TESTS "Enable optional tests of the JSONSchema Test Suite" ON) # create tests foreach test-file - file(GLOB_RECURSE TEST_FILES ${JSON_SCHEMA_TEST_SUITE_PATH}/tests/draft4/*.json) + file(GLOB TEST_FILES ${JSON_SCHEMA_TEST_SUITE_PATH}/tests/draft4/*.json) foreach(TEST_FILE ${TEST_FILES}) get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) add_test( - NAME ${TEST_NAME} + NAME "${JSON_SCHEMA_TEST_PREFIX}::${TEST_NAME}" COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test.sh $ ${TEST_FILE} ) endforeach() + + if (JSON_SCHEMA_ENABLE_OPTIONAL_TESTS) + file(GLOB OPT_TEST_FILES ${JSON_SCHEMA_TEST_SUITE_PATH}/tests/draft4/optional/*.json) + + foreach(TEST_FILE ${OPT_TEST_FILES}) + get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) + add_test( + NAME "${JSON_SCHEMA_TEST_PREFIX}::Optional::${TEST_NAME}" + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test.sh $ ${TEST_FILE} + ) + endforeach() + endif() else() message(STATUS "Consider setting JSON_SCHEMA_TEST_SUITE_PATH to a path in which JSON-Schema-Test-Suite is located (github.com/json-schema-org/JSON-Schema-Test-Suite).") endif()