PYTHONPATH=${CMAKE_SOURCE_DIR}/src/pybind)
list(APPEND tox_test run-tox-${name})
endfunction()
+
+# Helper for adding new tests built with Catch2:
+function(add_catch2_test test_name)
+if(NOT WITH_CATCH2)
+ return()
+endif()
+
+set(options NO_CATCH2_MAIN)
+set(oneValueArgs)
+set(multiValueArgs EXTRA_LIBS EXTRA_INCS)
+
+cmake_parse_arguments(PARSE_ARGV 0 catch2_opt
+ "${options}" "${oneValueArgs}" "${multiValueArgs}")
+
+ add_executable(unittest_${test_name}
+ test_${test_name}.cc)
+
+SET(tl_libs
+ librados
+ ceph-common
+ ${EXTRALIBS})
+
+SET(tl_incs
+ SYSTEM PRIVATE ${CMAKE_SOURCE_DIR})
+
+if(DEFINED catch2_opt_EXTRA_LIBS)
+ LIST(APPEND tl_libs ${catch2_opt_EXTRA_LIBS})
+endif()
+
+if(DEFINED catch2_opt_EXTRA_INCS)
+ LIST(APPEND tl_incs ${catch2_opt_EXTRA_INCS})
+endif()
+
+if(${catch2_opt_NO_CATCH2_MAIN})
+ LIST(APPEND tl_libs Catch2)
+else()
+ LIST(APPEND tl_libs Catch2WithMain)
+endif()
+
+target_link_libraries(unittest_${test_name}
+ ${tl_libs})
+
+target_include_directories(unittest_${test_name}
+ ${tl_incs})
+
+add_ceph_unittest(unittest_${test_name})
+
+endfunction()
${rgw_libs})
install(TARGETS ceph_test_datalog DESTINATION ${CMAKE_INSTALL_BINDIR})
-if(WITH_CATCH2)
- add_executable(unittest_rgw_hex
- test_rgw_hex.cc)
+#
+# Helper for adding RGW tests built with Catch2:
+# Note: to define a test that does not use Catch2::main(), use:
+# add_catch2_test_rgw(my_test_name NO_CATCH2_MAIN)
+# ...your test should be in a file called "test_<my_test_name>.cc (ex. "test_foo.cc")
+# and the output will be called "unittest_my_test_name".
+#
+function(add_catch2_test_rgw test_name)
+add_catch2_test(${test_name}
+ ${ARGV1}
+ EXTRA_LIBS rgw_common ${rgw_libs}
+ EXTRA_INCS "SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/src/rgw")
+endfunction()
+
+add_catch2_test_rgw(rgw_hex)
- target_include_directories(unittest_rgw_hex
- SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw")
-
- target_link_libraries(unittest_rgw_hex
- rgw_common
- librados
- ceph-common
- ${rgw_libs}
- ${EXTRALIBS}
- Catch2WithMain)
-
- add_ceph_unittest(unittest_rgw_hex)
-
-endif(WITH_CATCH2)