Code cleanup: deduplicate code for running Python scripts outside Blender.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 16 Feb 2018 00:22:34 +0000 (01:22 +0100)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 16 Feb 2018 11:51:49 +0000 (12:51 +0100)
tests/python/CMakeLists.txt

index ceed2ca4d09fc2f9f752648537139838e2dc290b..e03d8c065e7773d01bbdd850906a43330c228a62 100644 (file)
@@ -513,30 +513,34 @@ add_test(
 )
 endif()
 
+# Run Python script outside Blender.
+function(add_python_test testname testscript)
+       if(MSVC)
+               add_test(
+                       NAME ${testname}
+                       COMMAND
+                               "$<TARGET_FILE_DIR:blender>/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_d>"
+                               ${testscript} ${ARGN}
+               )
+       else()
+               add_test(
+                       NAME ${testname}
+                       COMMAND ${testscript} ${ARGN}
+               )
+       endif()
+endfunction()
+
 if(WITH_CYCLES)
        if(OPENIMAGEIO_IDIFF AND EXISTS "${TEST_SRC_DIR}/cycles/ctests/shader")
                macro(add_cycles_render_test subject)
-                       if(MSVC)
-                               add_test(
-                                       NAME cycles_${subject}_test
-                                       COMMAND
-                                               "$<TARGET_FILE_DIR:blender>/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_d>"
-                                               ${CMAKE_CURRENT_LIST_DIR}/cycles_render_tests.py
-                                       -blender "$<TARGET_FILE:blender>"
-                                       -testdir "${TEST_SRC_DIR}/cycles/ctests/${subject}"
-                                       -idiff "${OPENIMAGEIO_IDIFF}"
-                                       -outdir "${TEST_OUT_DIR}/cycles"
-                               )
-                       else()
-                               add_test(
-                                       NAME cycles_${subject}_test
-                                       COMMAND ${CMAKE_CURRENT_LIST_DIR}/cycles_render_tests.py
-                                       -blender "$<TARGET_FILE:blender>"
-                                       -testdir "${TEST_SRC_DIR}/cycles/ctests/${subject}"
-                                       -idiff "${OPENIMAGEIO_IDIFF}"
-                                       -outdir "${TEST_OUT_DIR}/cycles"
-                               )
-                       endif()
+                       add_python_test(
+                               cycles_${subject}_test
+                               ${CMAKE_CURRENT_LIST_DIR}/cycles_render_tests.py
+                               -blender "$<TARGET_FILE:blender>"
+                               -testdir "${TEST_SRC_DIR}/cycles/ctests/${subject}"
+                               -idiff "${OPENIMAGEIO_IDIFF}"
+                               -outdir "${TEST_OUT_DIR}/cycles"
+                       )
                endmacro()
                if(WITH_OPENGL_RENDER_TESTS)
                        add_cycles_render_test(opengl)
@@ -564,44 +568,23 @@ endif()
 
 if(WITH_OPENGL_DRAW_TESTS)
        if(OPENIMAGEIO_IDIFF AND EXISTS "${TEST_SRC_DIR}/opengl")
-               macro(add_opengl_draw_test subject)
-                       if(MSVC)
-                               add_test(
-                                       NAME opengl_draw_${subject}_test
-                                       COMMAND
-                                               "$<TARGET_FILE_DIR:blender>/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_d>"
+               # Use all test folders
+               file(GLOB children RELATIVE ${TEST_SRC_DIR} ${TEST_SRC_DIR}/*)
+               foreach(child ${children})
+                       if(IS_DIRECTORY ${TEST_SRC_DIR}/${child})
+                               file(GLOB blends ${TEST_SRC_DIR}/${child}/*.blend)
+                               if(blends)
+                                       add_python_test(
+                                               opengl_draw_${child}_test
                                                ${CMAKE_CURRENT_LIST_DIR}/opengl_draw_tests.py
-                                       -blender "$<TARGET_FILE:blender>"
-                                       -testdir "${TEST_SRC_DIR}/${subject}"
-                                       -idiff "${OPENIMAGEIO_IDIFF}"
-                                       -outdir "${TEST_OUT_DIR}/opengl_draw"
-                               )
-                       else()
-                               add_test(
-                                       NAME opengl_draw_${subject}_test
-                                       COMMAND ${CMAKE_CURRENT_LIST_DIR}/opengl_draw_tests.py
-                                       -blender "$<TARGET_FILE:blender>"
-                                       -testdir "${TEST_SRC_DIR}/${subject}"
-                                       -idiff "${OPENIMAGEIO_IDIFF}"
-                                       -outdir "${TEST_OUT_DIR}/opengl_draw"
-                               )
-                       endif()
-               endmacro()
-
-               function(add_opengl_draw_tests)
-                       # Use all test folders
-                       file(GLOB children RELATIVE ${TEST_SRC_DIR} ${TEST_SRC_DIR}/*)
-                       foreach(child ${children})
-                               if(IS_DIRECTORY ${TEST_SRC_DIR}/${child})
-                                       file(GLOB blends ${TEST_SRC_DIR}/${child}/*.blend)
-                                       if(blends)
-                                               add_opengl_draw_test(${child})
-                                       endif()
+                                               -blender "$<TARGET_FILE:blender>"
+                                               -testdir "${TEST_SRC_DIR}/${child}"
+                                               -idiff "${OPENIMAGEIO_IDIFF}"
+                                               -outdir "${TEST_OUT_DIR}/opengl_draw"
+                                       )
                                endif()
-                       endforeach()
-               endfunction()
-
-               add_opengl_draw_tests()
+                       endif()
+               endforeach()
        else()
                MESSAGE(STATUS "Disabling OpenGL tests because tests folder does not exist")
        endif()
@@ -616,26 +599,13 @@ if(WITH_ALEMBIC)
        get_filename_component(real_include_dir ${ALEMBIC_INCLUDE_DIR} REALPATH)
        get_filename_component(ALEMBIC_ROOT_DIR ${real_include_dir} DIRECTORY)
 
-       if(MSVC)
-               # FIXME, de-duplicate.
-               add_test(
-                       NAME alembic_tests
-                       COMMAND
-                               "$<TARGET_FILE_DIR:blender>/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_d>"
-                               ${CMAKE_CURRENT_LIST_DIR}/alembic_tests.py
-                       --blender "$<TARGET_FILE:blender>"
-                       --testdir "${TEST_SRC_DIR}/alembic"
-                       --alembic-root "${ALEMBIC_ROOT_DIR}"
-               )
-       else()
-               add_test(
-                       NAME alembic_tests
-                       COMMAND ${CMAKE_CURRENT_LIST_DIR}/alembic_tests.py
-                       --blender "$<TARGET_FILE:blender>"
-                       --testdir "${TEST_SRC_DIR}/alembic"
-                       --alembic-root "${ALEMBIC_ROOT_DIR}"
-               )
-       endif()
+       add_python_test(
+               alembic_tests
+               ${CMAKE_CURRENT_LIST_DIR}/alembic_tests.py
+               --blender "$<TARGET_FILE:blender>"
+               --testdir "${TEST_SRC_DIR}/alembic"
+               --alembic-root "${ALEMBIC_ROOT_DIR}"
+       )
 
        add_test(
                NAME script_alembic_import