[Bf-blender-cvs] [bb96db21244] sybren-usd: CMake/GTest: allow defining CLI arguments for GTEST tests

Sybren A. Stüvel noreply at git.blender.org
Thu Nov 21 10:35:55 CET 2019


Commit: bb96db21244a16aadb446cfbfec11c9c5055cedd
Author: Sybren A. Stüvel
Date:   Tue Nov 12 18:03:32 2019 +0100
Branches: sybren-usd
https://developer.blender.org/rBbb96db21244a16aadb446cfbfec11c9c5055cedd

CMake/GTest: allow defining CLI arguments for GTEST tests

For USD tests I need to load a blend file from a GTest test, and in order to do that properly it needs to get the location of the lib/tests directory. The easiest way to do this is to pass it on the CLI.

To make it possible to extend the `BLENDER_SRC_GTEST_EX()` without adding yet more macros, it now accepts keyword arguments.

Differential Revision: https://developer.blender.org/D6236

===================================================================

M	build_files/cmake/Modules/GTestTesting.cmake

===================================================================

diff --git a/build_files/cmake/Modules/GTestTesting.cmake b/build_files/cmake/Modules/GTestTesting.cmake
index a93e829e6b0..b7164690096 100644
--- a/build_files/cmake/Modules/GTestTesting.cmake
+++ b/build_files/cmake/Modules/GTestTesting.cmake
@@ -12,9 +12,15 @@
 #
 #=============================================================================
 
-macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
+macro(BLENDER_SRC_GTEST_EX)
   if(WITH_GTESTS)
-    set(TARGET_NAME ${NAME}_test)
+    # See https://cmake.org/cmake/help/v3.5/command/cmake_parse_arguments.html
+    set(options SKIP_ADD_TEST)
+    set(oneValueArgs NAME EXTRA_CLI)
+    set(multiValueArgs SRC EXTRA_LIBS)
+    cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+    set(TARGET_NAME ${ARG_NAME}_test)
     get_property(_current_include_directories
                  DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                  PROPERTY INCLUDE_DIRECTORIES)
@@ -30,11 +36,11 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
     )
     unset(_current_include_directories)
 
-    add_executable(${TARGET_NAME} ${SRC})
+    add_executable(${TARGET_NAME} ${ARG_SRC})
     target_include_directories(${TARGET_NAME} PUBLIC "${TEST_INC}")
     target_include_directories(${TARGET_NAME} SYSTEM PUBLIC "${TEST_INC_SYS}")
     target_link_libraries(${TARGET_NAME}
-                          ${EXTRA_LIBS}
+                          ${ARG_EXTRA_LIBS}
                           ${PLATFORM_LINKLIBS}
                           bf_testing_main
                           bf_intern_eigen
@@ -60,8 +66,11 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
                           RUNTIME_OUTPUT_DIRECTORY         "${TESTS_OUTPUT_DIR}"
                           RUNTIME_OUTPUT_DIRECTORY_RELEASE "${TESTS_OUTPUT_DIR}"
                           RUNTIME_OUTPUT_DIRECTORY_DEBUG   "${TESTS_OUTPUT_DIR}")
-    if(${DO_ADD_TEST})
-      add_test(NAME ${TARGET_NAME} COMMAND ${TESTS_OUTPUT_DIR}/${TARGET_NAME} WORKING_DIRECTORY ${TEST_INSTALL_DIR})
+    if(NOT ARG_SKIP_ADD_TEST)
+      add_test(
+        NAME ${TARGET_NAME}
+        COMMAND ${TESTS_OUTPUT_DIR}/${TARGET_NAME} ${EXTRA_CLI}
+        WORKING_DIRECTORY ${TEST_INSTALL_DIR})
 
       # Don't fail tests on leaks since these often happen in external libraries
       # that we can't fix.
@@ -74,13 +83,23 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
 endmacro()
 
 macro(BLENDER_SRC_GTEST NAME SRC EXTRA_LIBS)
-  BLENDER_SRC_GTEST_EX("${NAME}" "${SRC}" "${EXTRA_LIBS}" "TRUE")
+  BLENDER_SRC_GTEST_EX(
+    NAME "${NAME}"
+    SRC "${SRC}"
+    EXTRA_LIBS "${EXTRA_LIBS}")
 endmacro()
 
 macro(BLENDER_TEST NAME EXTRA_LIBS)
-  BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "TRUE")
+  BLENDER_SRC_GTEST_EX(
+    NAME "${NAME}"
+    SRC "${NAME}_test.cc"
+    EXTRA_LIBS "${EXTRA_LIBS}")
 endmacro()
 
 macro(BLENDER_TEST_PERFORMANCE NAME EXTRA_LIBS)
-  BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "FALSE")
+  BLENDER_SRC_GTEST_EX(
+    NAME "${NAME}"
+    SRC "${NAME}_test.cc"
+    EXTRA_LIBS "${EXTRA_LIBS}"
+    SKIP_ADD_TEST)
 endmacro()



More information about the Bf-blender-cvs mailing list