# Tests for contrib/schemagen if(NOT Python3_Interpreter_FOUND) return() endif() add_test( NAME schemagen_python_tests COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_schemagen.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) set(SCHEMAGEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/weaseljson_schemagen.py) set(EXAMPLE_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/example.schema.json) set(GEN_H ${CMAKE_CURRENT_BINARY_DIR}/gen.h) set(BIG_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/big.schema.json) set(BIG_H ${CMAKE_CURRENT_BINARY_DIR}/big.h) add_custom_command( OUTPUT ${GEN_H} COMMAND ${Python3_EXECUTABLE} ${SCHEMAGEN_SCRIPT} ${EXAMPLE_SCHEMA} -o ${GEN_H} --namespace weasel_schema DEPENDS ${SCHEMAGEN_SCRIPT} ${EXAMPLE_SCHEMA} COMMENT "Generating gen.h from example.schema.json") add_custom_command( OUTPUT ${BIG_H} COMMAND ${Python3_EXECUTABLE} ${SCHEMAGEN_SCRIPT} ${BIG_SCHEMA} -o ${BIG_H} --namespace big_schema DEPENDS ${SCHEMAGEN_SCRIPT} ${BIG_SCHEMA} COMMENT "Generating big.h from big.schema.json") add_custom_target(schemagen_gen_h DEPENDS ${GEN_H}) add_custom_target(schemagen_big_h DEPENDS ${BIG_H}) add_executable(schemagen_example ${CMAKE_CURRENT_SOURCE_DIR}/test_gen.cpp) target_include_directories(schemagen_example PRIVATE include ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(schemagen_example PRIVATE ${PROJECT_NAME}) target_compile_options(schemagen_example PRIVATE -Wno-switch-enum) add_dependencies(schemagen_example schemagen_gen_h) add_executable(schemagen_big ${CMAKE_CURRENT_SOURCE_DIR}/test_big.cpp) target_include_directories(schemagen_big PRIVATE include ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(schemagen_big PRIVATE ${PROJECT_NAME}) target_compile_options(schemagen_big PRIVATE -Wno-switch-enum) add_dependencies(schemagen_big schemagen_big_h) set(NULLABLE_OBJECT_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/nullable_object.schema.json) set(NULLABLE_STRING_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/nullable_string.schema.json) set(NULLABLE_ARRAY_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/nullable_array.schema.json) set(NULLABLE_OBJECT_H ${CMAKE_CURRENT_BINARY_DIR}/nullable_object.h) set(NULLABLE_STRING_H ${CMAKE_CURRENT_BINARY_DIR}/nullable_string.h) set(NULLABLE_ARRAY_H ${CMAKE_CURRENT_BINARY_DIR}/nullable_array.h) add_custom_command( OUTPUT ${NULLABLE_OBJECT_H} COMMAND ${Python3_EXECUTABLE} ${SCHEMAGEN_SCRIPT} ${NULLABLE_OBJECT_SCHEMA} -o ${NULLABLE_OBJECT_H} --namespace nullable_object DEPENDS ${SCHEMAGEN_SCRIPT} ${NULLABLE_OBJECT_SCHEMA} COMMENT "Generating nullable_object.h") add_custom_command( OUTPUT ${NULLABLE_STRING_H} COMMAND ${Python3_EXECUTABLE} ${SCHEMAGEN_SCRIPT} ${NULLABLE_STRING_SCHEMA} -o ${NULLABLE_STRING_H} --namespace nullable_string DEPENDS ${SCHEMAGEN_SCRIPT} ${NULLABLE_STRING_SCHEMA} COMMENT "Generating nullable_string.h") add_custom_command( OUTPUT ${NULLABLE_ARRAY_H} COMMAND ${Python3_EXECUTABLE} ${SCHEMAGEN_SCRIPT} ${NULLABLE_ARRAY_SCHEMA} -o ${NULLABLE_ARRAY_H} --namespace nullable_array DEPENDS ${SCHEMAGEN_SCRIPT} ${NULLABLE_ARRAY_SCHEMA} COMMENT "Generating nullable_array.h") add_custom_target( schemagen_nullable_h DEPENDS ${NULLABLE_OBJECT_H} ${NULLABLE_STRING_H} ${NULLABLE_ARRAY_H}) add_executable(schemagen_nullable_root ${CMAKE_CURRENT_SOURCE_DIR}/test_nullable_root.cpp) target_include_directories(schemagen_nullable_root PRIVATE include ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(schemagen_nullable_root PRIVATE ${PROJECT_NAME}) target_compile_options(schemagen_nullable_root PRIVATE -Wno-switch-enum) add_dependencies(schemagen_nullable_root schemagen_nullable_h) add_test( NAME schemagen_example COMMAND schemagen_example WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) add_test( NAME schemagen_big COMMAND schemagen_big WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) add_test( NAME schemagen_nullable_root COMMAND schemagen_nullable_root WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})