Commit: eba09673052d14dceccba0c2980713f7b4eb44d9
Author: Campbell Barton
Date:   Wed Jun 18 22:49:17 2014 +1000
https://developer.blender.org/rBeba09673052d14dceccba0c2980713f7b4eb44d9

GTest testing framework

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

M       CMakeLists.txt
A       build_files/cmake/Modules/Testing.cmake
M       build_files/cmake/macros.cmake
M       extern/CMakeLists.txt
A       extern/gtest/CMakeLists.txt
A       extern/gtest/LICENSE
A       extern/gtest/README
A       extern/gtest/include/gtest/gtest-death-test.h
A       extern/gtest/include/gtest/gtest-message.h
A       extern/gtest/include/gtest/gtest-param-test.h
A       extern/gtest/include/gtest/gtest-printers.h
A       extern/gtest/include/gtest/gtest-spi.h
A       extern/gtest/include/gtest/gtest-test-part.h
A       extern/gtest/include/gtest/gtest-typed-test.h
A       extern/gtest/include/gtest/gtest.h
A       extern/gtest/include/gtest/gtest_pred_impl.h
A       extern/gtest/include/gtest/gtest_prod.h
A       extern/gtest/include/gtest/internal/gtest-death-test-internal.h
A       extern/gtest/include/gtest/internal/gtest-filepath.h
A       extern/gtest/include/gtest/internal/gtest-internal.h
A       extern/gtest/include/gtest/internal/gtest-linked_ptr.h
A       extern/gtest/include/gtest/internal/gtest-param-util-generated.h
A       extern/gtest/include/gtest/internal/gtest-param-util.h
A       extern/gtest/include/gtest/internal/gtest-port.h
A       extern/gtest/include/gtest/internal/gtest-string.h
A       extern/gtest/include/gtest/internal/gtest-tuple.h
A       extern/gtest/include/gtest/internal/gtest-type-util.h
A       extern/gtest/src/gtest-all.cc
A       extern/gtest/src/gtest-death-test.cc
A       extern/gtest/src/gtest-filepath.cc
A       extern/gtest/src/gtest-internal-inl.h
A       extern/gtest/src/gtest-port.cc
A       extern/gtest/src/gtest-printers.cc
A       extern/gtest/src/gtest-test-part.cc
A       extern/gtest/src/gtest-typed-test.cc
A       extern/gtest/src/gtest.cc
A       extern/gtest/src/gtest_main.cc
M       extern/libmv/CMakeLists.txt
M       extern/libmv/SConscript
M       extern/libmv/bundle.sh
M       extern/libmv/files.txt
A       extern/libmv/libmv/base/scoped_ptr_test.cc
A       extern/libmv/libmv/base/vector_test.cc
A       extern/libmv/libmv/image/array_nd_test.cc
A       extern/libmv/libmv/image/convolve_test.cc
A       extern/libmv/libmv/image/image_drawing.h
A       extern/libmv/libmv/image/image_test.cc
A       extern/libmv/libmv/image/sample_test.cc
A       extern/libmv/libmv/image/tuple_test.cc
A       extern/libmv/libmv/multiview/euclidean_resection_test.cc
A       extern/libmv/libmv/multiview/fundamental_test.cc
A       extern/libmv/libmv/multiview/homography_error.h
A       extern/libmv/libmv/multiview/homography_test.cc
A       extern/libmv/libmv/multiview/nviewtriangulation_test.cc
A       extern/libmv/libmv/multiview/panography_kernel.cc
A       extern/libmv/libmv/multiview/panography_kernel.h
A       extern/libmv/libmv/multiview/panography_test.cc
A       extern/libmv/libmv/multiview/projection_test.cc
A       extern/libmv/libmv/multiview/resection_test.cc
A       extern/libmv/libmv/multiview/test_data_sets.cc
A       extern/libmv/libmv/multiview/test_data_sets.h
A       extern/libmv/libmv/multiview/triangulation_test.cc
A       extern/libmv/libmv/multiview/two_view_kernel.h
A       extern/libmv/libmv/numeric/dogleg_test.cc
A       extern/libmv/libmv/numeric/function_derivative_test.cc
A       extern/libmv/libmv/numeric/levenberg_marquardt_test.cc
A       extern/libmv/libmv/numeric/numeric_test.cc
A       extern/libmv/libmv/numeric/poly_test.cc
A       extern/libmv/libmv/simple_pipeline/camera_intrinsics_test.cc
A       extern/libmv/libmv/simple_pipeline/detect_test.cc
A       extern/libmv/libmv/simple_pipeline/intersect_test.cc
A       extern/libmv/libmv/simple_pipeline/keyframe_selection_test.cc
A       extern/libmv/libmv/simple_pipeline/modal_solver_test.cc
A       extern/libmv/libmv/simple_pipeline/resect_test.cc
A       extern/libmv/libmv/tracking/brute_region_tracker_test.cc
A       extern/libmv/libmv/tracking/klt_region_tracker_test.cc
A       extern/libmv/libmv/tracking/pyramid_region_tracker_test.cc
M       source/blenderplayer/CMakeLists.txt
M       source/creator/CMakeLists.txt
M       tests/CMakeLists.txt
A       tests/blenlib_tests/CMakeLists.txt
A       tests/blenlib_tests/mathutils_color_test.cc
A       tests/blenlib_tests/mathutils_geom_test.cc
A       tests/blenlib_tests/path_util_test.cc
A       tests/testing/CMakeLists.txt
A       tests/testing/testing.h
A       tests/testing/testing_main.cc

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

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5593820..bf92b23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -109,6 +109,7 @@ enable_testing()
 
 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
+set(TESTS_OUTPUT_DIR ${EXECUTABLE_OUTPUT_PATH}/tests CACHE INTERNAL "" FORCE)
 
 #-----------------------------------------------------------------------------
 # Set default config options
@@ -300,6 +301,9 @@ if(CMAKE_COMPILER_IS_GNUCC)
        mark_as_advanced(WITH_GCC_MUDFLAP)
 endif()
 
+# Unit testsing
+OPTION(WITH_TESTS "Enable unit tests" OFF)
+
 if(APPLE)
        cmake_minimum_required(VERSION 2.8.8)
        cmake_policy(VERSION 2.8.8)
@@ -2330,10 +2334,17 @@ endif()
 #-----------------------------------------------------------------------------
 # Libraries
 
+if(WITH_TESTS)
+       include(Testing)
+endif()
+
 if(WITH_BLENDER OR WITH_PLAYER)
-       add_subdirectory(source)
        add_subdirectory(intern)
        add_subdirectory(extern)
+
+       # source after intern and extern to gather all
+       # internal and external library information first, for test linking
+       add_subdirectory(source)
 elseif(WITH_CYCLES_STANDALONE)
        add_subdirectory(intern/cycles)
        if(NOT WITH_SYSTEM_GLEW)
diff --git a/build_files/cmake/Modules/Testing.cmake 
b/build_files/cmake/Modules/Testing.cmake
new file mode 100644
index 0000000..2e14d6e
--- /dev/null
+++ b/build_files/cmake/Modules/Testing.cmake
@@ -0,0 +1,47 @@
+#=============================================================================
+# Copyright 2014 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#
+# Inspired on the Testing.cmake from Libmv
+#
+#=============================================================================
+
+macro(BLENDER_SRC_TEST NAME SRC EXTRA_LIBS)
+       if(WITH_TESTS)
+               get_property(_current_include_directories
+                            DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                            PROPERTY INCLUDE_DIRECTORIES)
+               set(TEST_INC
+                       ${_current_include_directories}
+                       ${CMAKE_SOURCE_DIR}/source/tests
+                       ${CMAKE_SOURCE_DIR}/extern/libmv/third_party/glog/src
+                       ${CMAKE_SOURCE_DIR}/extern/libmv/third_party/gflags
+                       ${CMAKE_SOURCE_DIR}/extern/gtest/include
+               )
+               unset(_current_include_directories)
+
+               add_executable(${NAME}_test ${SRC})
+               target_link_libraries(${NAME}_test
+                                     ${EXTRA_LIBS}
+                                     bf_testing_main
+                                     bf_intern_guardedalloc
+                                     extern_gtest
+                                     extern_glog)
+               set_target_properties(${NAME}_test PROPERTIES
+                                     RUNTIME_OUTPUT_DIRECTORY         
"${TESTS_OUTPUT_DIR}"
+                                     RUNTIME_OUTPUT_DIRECTORY_RELEASE 
"${TESTS_OUTPUT_DIR}"
+                                     RUNTIME_OUTPUT_DIRECTORY_DEBUG   
"${TESTS_OUTPUT_DIR}"
+                                     INCLUDE_DIRECTORIES              
"${TEST_INC}")
+               add_test(${NAME}_test ${TESTS_OUTPUT_DIR}/${NAME}_test)
+       endif()
+endmacro()
+
+macro(BLENDER_TEST NAME EXTRA_LIBS)
+       BLENDER_SRC_TEST("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}")
+endmacro()
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index bdd3883..f8720f0 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -413,6 +413,240 @@ macro(setup_liblinks
        target_link_libraries(${target} ${PLATFORM_LINKLIBS} ${CMAKE_DL_LIBS})
 endmacro()
 
+macro(SETUP_BLENDER_SORTED_LIBS)
+       get_property(BLENDER_LINK_LIBS GLOBAL PROPERTY BLENDER_LINK_LIBS)
+
+       list(APPEND BLENDER_LINK_LIBS
+               bf_windowmanager
+               bf_render
+       )
+
+       if(WITH_MOD_FLUID)
+               list(APPEND BLENDER_LINK_LIBS bf_intern_elbeem)
+       endif()
+
+       if(WITH_CYCLES)
+               list(APPEND BLENDER_LINK_LIBS
+                       cycles_render
+                       cycles_bvh
+                       cycles_device
+                       cycles_kernel
+                       cycles_util
+                       cycles_subd)
+               if(WITH_CYCLES_OSL)
+                       list(APPEND BLENDER_LINK_LIBS cycles_kernel_osl)
+               endif()
+       endif()
+
+       # Sort libraries
+       set(BLENDER_SORTED_LIBS
+               bf_windowmanager
+
+               bf_editor_space_api
+               bf_editor_space_action
+               bf_editor_space_buttons
+               bf_editor_space_console
+               bf_editor_space_file
+               bf_editor_space_graph
+               bf_editor_space_image
+               bf_editor_space_info
+               bf_editor_space_logic
+               bf_editor_space_nla
+               bf_editor_space_node
+               bf_editor_space_outliner
+               bf_editor_space_script
+               bf_editor_space_sequencer
+               bf_editor_space_text
+               bf_editor_space_time
+               bf_editor_space_userpref
+               bf_editor_space_view3d
+               bf_editor_space_clip
+
+               bf_editor_transform
+               bf_editor_util
+               bf_editor_uvedit
+               bf_editor_curve
+               bf_editor_gpencil
+               bf_editor_interface
+               bf_editor_mesh
+               bf_editor_metaball
+               bf_editor_object
+               bf_editor_armature
+               bf_editor_physics
+               bf_editor_render
+               bf_editor_screen
+               bf_editor_sculpt_paint
+               bf_editor_sound
+               bf_editor_animation
+               bf_editor_datafiles
+               bf_editor_mask
+               bf_editor_io
+
+               bf_render
+               bf_python
+               bf_python_ext
+               bf_python_mathutils
+               bf_python_bmesh
+               bf_freestyle
+               bf_ikplugin
+               bf_modifiers
+               bf_bmesh
+               bf_blenkernel
+               bf_nodes
+               bf_gpu
+               bf_blenloader
+               bf_imbuf
+               bf_blenlib
+               bf_intern_ghost
+               bf_intern_string
+               bf_avi
+               bf_imbuf_cineon
+               bf_imbuf_openexr
+               bf_imbuf_openimageio
+               bf_imbuf_dds
+               bf_collada
+               bf_intern_elbeem
+               bf_intern_memutil
+               bf_intern_guardedalloc
+               bf_intern_ctr
+               bf_intern_utfconv
+               ge_blen_routines
+               ge_converter
+               ge_phys_dummy
+               ge_phys_bullet
+               bf_intern_smoke
+               extern_minilzo
+               extern_lzma
+               extern_colamd
+               ge_logic_ketsji
+               extern_recastnavigation
+               ge_logic
+               ge_rasterizer
+               ge_oglrasterizer
+               ge_logic_expressions
+               ge_scenegraph
+               ge_logic_network
+               ge_logic_ngnetwork
+               ge_logic_loopbacknetwork
+               bf_intern_moto
+               extern_openjpeg
+               extern_redcode
+               ge_videotex
+               bf_rna
+               bf_dna
+               bf_blenfont
+               bf_intern_audaspace
+               bf_intern_mikktspace
+               bf_intern_dualcon
+               bf_intern_cycles
+               cycles_render
+               cycles_bvh
+               cycles_device
+               cycles_kernel
+               cycles_util
+               cycles_subd
+               bf_intern_raskter
+               bf_intern_opencolorio
+               extern_rangetree
+               extern_wcwidth
+               extern_libmv
+               extern_glog
+       )
+
+       if(WITH_COMPOSITOR)
+               # added for opencl compositor
+               list_insert_before(BLENDER_SORTED_LIBS "bf_blenkernel" 
"bf_compositor")
+               list_insert_after(BLENDER_SORTED_LIBS "bf_compositor" 
"bf_intern_opencl")
+       endif()
+
+       if(WITH_LIBMV)
+               list(APPEND BLENDER_SORTED_LIBS extern_ceres)
+       endif()
+
+       if(WITH_MOD_CLOTH_ELTOPO)
+               list(APPEND BLENDER_SORTED_LIBS extern_eltopo)
+       endif()
+
+       if(NOT WITH_SYSTEM_GLEW)
+               list(APPEND BLENDER_SORTED_LIBS extern_glew)
+       endif()
+
+       if(WITH_BINRELOC)
+               list(APPEND BLENDER_SORTED_LIBS extern_binreloc)
+       endif()
+
+       if(WITH_CXX_GUARDEDALLOC)
+               list(APPEND BLENDER_SORTED_LIBS bf_intern_guardedalloc_cpp)
+       endif()
+
+       if(WITH_IK_SOLVER)
+               list_insert_after(BLENDER_SORTED_LIBS "bf_intern_elbeem" 
"bf_intern_iksolver")
+       endif()
+
+       if(WITH_IK_ITASC)
+               list(APPEND BLENDER_SORTED_LIBS bf_intern_itasc)
+       endif()
+
+       if(WITH_CODEC_QUICKTIME)
+               list(APPEND BLENDER_SORTED_LIBS bf_quicktime)
+       endif()
+
+       if(WITH_INPUT_NDOF)
+               list(APPEND BLENDER_SORTED_LIBS bf_intern_ghostndof3dconnexion)
+       endif()
+       
+       if(WITH_MOD_BOOLEAN)
+               list(APPEND BLENDER_SORTED_LIBS extern_carve)
+       endif()
+
+       if(WITH_GHOST_XDND)
+               list(APPEND BLENDER_SORTED_LIBS extern_xdnd)
+       endif()
+
+       if(WITH_CYCLES_OSL)
+               list_insert_after(BLENDER_SORTED_LIBS "cycles_kernel" 
"cycles_kernel_osl")
+       endif()
+
+       if(WITH_INTERNATIONAL)
+               list(APPEND BLENDER_SORTED_LIBS bf_intern_locale)
+       endif()
+
+       if(WITH_OPENNL)
+               list_insert_after(BLENDER_SORTED_LIBS "bf_render" 
"bf_intern_opennl")
+       endif()
+
+       if(WITH_BULLET)
+               list_insert_after(BLENDER_SORTED_LIBS "bf_blenkernel" 
"bf_intern_rigidbody")
+       endif()
+
+       if(WITH_BULLET AND NOT WITH_SYSTEM_BULLET)
+               list_insert_after(BLENDER_SORTED_LIBS "ge_logic_ngnetwork" 
"extern_bullet")
+       endif()
+
+       foreach(SORTLIB ${BLENDER_SORTED_LIBS})
+               set(REMLIB ${SORTLIB})
+               foreach(SEARCHLIB ${BLENDER_LINK_LIBS})
+                       if(${SEARCHLIB} STREQUAL ${SORTLIB})
+                               set(REMLIB "")
+                       endif()
+               endforeach()
+               if(REMLIB)
+                       # message(STATUS "Removing library ${REMLIB} from 
blender linking because: not configured")
+                       list(APPEND REM_MSG ${REMLIB})
+                       list(REMOVE_ITEM BLENDER_SORTED_LIBS ${REMLIB})
+               endif()
+       endforeach()
+       if(REM_MSG)
+               list(SORT REM_MSG)
+               message(STATUS "Blender Skipping: (${REM_MSG})")
+       endif()
+
+       unset(SEARCHLIB)
+       unset(SORTLIB)
+       unset(REMLIB)
+       unset(REM_MSG)
+endmacro()
+
 macro(TEST_SSE_SUPPORT
        _sse_flags
        _sse2_flags)
diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
index f6de873..999ffda 100644
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@ -79,3 +79,7 @@ if(WITH_GHOST_XDND)
                add_subdirectory(xdnd)
        endif()
 endif()
+
+if(WITH_TESTS)
+       add_subdirectory(gtest)
+endif()
diff --git a/extern/gtest/CMakeLists.txt b/extern/gtest/CMakeLists.txt
new file mode 100644
index 0000000..b5e4002
--- /dev/null
+++ b/extern/gtest/CMakeLists.txt
@@ -0,0 +1,64 @@
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The Original Code is Copyright (C) 2014, Blender Foundation
+# All rights reserved.
+#
+# Contributor(s): Sergey Sharybin
+#
+# ***** END GPL LICENSE BLOCK *****
+
+set(INC
+       .
+       include
+)
+
+set(INC_SYS
+
+

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to