[Bf-blender-cvs] [ac655be] master: Add GMock library which is responsive for dealing with mock objects

Sergey Sharybin noreply at git.blender.org
Fri Jul 29 22:19:58 CEST 2016


Commit: ac655be0e328dc2390a70a6593b03ab9fb867a22
Author: Sergey Sharybin
Date:   Fri Jul 29 18:34:33 2016 +0200
Branches: master
https://developer.blender.org/rBac655be0e328dc2390a70a6593b03ab9fb867a22

Add GMock library which is responsive for dealing with mock objects

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

M	build_files/cmake/Modules/GTestTesting.cmake
M	extern/CMakeLists.txt
A	extern/gmock/CMakeLists.txt
A	extern/gmock/LICENSE
A	extern/gmock/README.blender
A	extern/gmock/README.md
A	extern/gmock/include/gmock/gmock-actions.h
A	extern/gmock/include/gmock/gmock-cardinalities.h
A	extern/gmock/include/gmock/gmock-generated-actions.h
A	extern/gmock/include/gmock/gmock-generated-function-mockers.h
A	extern/gmock/include/gmock/gmock-generated-matchers.h
A	extern/gmock/include/gmock/gmock-generated-nice-strict.h
A	extern/gmock/include/gmock/gmock-matchers.h
A	extern/gmock/include/gmock/gmock-more-actions.h
A	extern/gmock/include/gmock/gmock-more-matchers.h
A	extern/gmock/include/gmock/gmock-spec-builders.h
A	extern/gmock/include/gmock/gmock.h
A	extern/gmock/include/gmock/internal/custom/gmock-generated-actions.h
A	extern/gmock/include/gmock/internal/custom/gmock-matchers.h
A	extern/gmock/include/gmock/internal/custom/gmock-port.h
A	extern/gmock/include/gmock/internal/gmock-generated-internal-utils.h
A	extern/gmock/include/gmock/internal/gmock-internal-utils.h
A	extern/gmock/include/gmock/internal/gmock-port.h
A	extern/gmock/src/gmock-all.cc
A	extern/gmock/src/gmock-cardinalities.cc
A	extern/gmock/src/gmock-internal-utils.cc
A	extern/gmock/src/gmock-matchers.cc
A	extern/gmock/src/gmock-spec-builders.cc
A	extern/gmock/src/gmock.cc
A	extern/gmock/src/gmock_main.cc
A	tests/gtests/testing/mock_log.h

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

diff --git a/build_files/cmake/Modules/GTestTesting.cmake b/build_files/cmake/Modules/GTestTesting.cmake
index 3ccca1f..96c06ef 100644
--- a/build_files/cmake/Modules/GTestTesting.cmake
+++ b/build_files/cmake/Modules/GTestTesting.cmake
@@ -23,6 +23,7 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
 			${CMAKE_SOURCE_DIR}/extern/glog/src
 			${CMAKE_SOURCE_DIR}/extern/gflags/src
 			${CMAKE_SOURCE_DIR}/extern/gtest/include
+			${CMAKE_SOURCE_DIR}/extern/gmock/include
 		)
 		unset(_current_include_directories)
 
@@ -33,6 +34,7 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
 		                      bf_testing_main
 		                      bf_intern_guardedalloc
 		                      extern_gtest
+		                      extern_gmock
 		                      # needed for glog
 		                      ${PTHREADS_LIBRARIES}
 		                      extern_glog
diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
index b046e96..45aa4a9 100644
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@ -105,6 +105,7 @@ endif()
 
 if(WITH_GTESTS)
 	add_subdirectory(gtest)
+	add_subdirectory(gmock)
 endif()
 
 if(WITH_SDL AND WITH_SDL_DYNLOAD)
diff --git a/extern/gmock/CMakeLists.txt b/extern/gmock/CMakeLists.txt
new file mode 100644
index 0000000..c0c8700
--- /dev/null
+++ b/extern/gmock/CMakeLists.txt
@@ -0,0 +1,66 @@
+# ***** 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
+  ../gtest/include
+)
+
+set(SRC
+  # src/gmock-all.cc
+
+  src/gmock-cardinalities.cc
+  src/gmock.cc
+  src/gmock-internal-utils.cc
+  src/gmock_main.cc
+  src/gmock-matchers.cc
+  src/gmock-spec-builders.cc
+)
+
+set(SRC_HEADERS
+  include/gmock/gmock-actions.h
+  include/gmock/gmock-cardinalities.h
+  include/gmock/gmock-generated-actions.h
+  include/gmock/gmock-generated-function-mockers.h
+  include/gmock/gmock-generated-matchers.h
+  include/gmock/gmock-generated-nice-strict.h
+  include/gmock/gmock.h
+  include/gmock/gmock-matchers.h
+  include/gmock/gmock-more-actions.h
+  include/gmock/gmock-more-matchers.h
+  include/gmock/gmock-spec-builders.h
+  include/gmock/internal/custom/gmock-generated-actions.h
+  include/gmock/internal/custom/gmock-matchers.h
+  include/gmock/internal/custom/gmock-port.h
+  include/gmock/internal/gmock-generated-internal-utils.h
+  include/gmock/internal/gmock-internal-utils.h
+  include/gmock/internal/gmock-port.h
+)
+
+include_directories(${INC})
+include_directories(SYSTEM ${INC_SYS})
+add_library(extern_gmock ${SRC} ${SRC_HEADERS})
diff --git a/extern/gmock/LICENSE b/extern/gmock/LICENSE
new file mode 100644
index 0000000..1941a11
--- /dev/null
+++ b/extern/gmock/LICENSE
@@ -0,0 +1,28 @@
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/extern/gmock/README.blender b/extern/gmock/README.blender
new file mode 100644
index 0000000..41dda92
--- /dev/null
+++ b/extern/gmock/README.blender
@@ -0,0 +1,7 @@
+Project: Google C++ Testing Framework
+URL: https://github.com/google/googletest
+License: New BSD
+Upstream version: 1.7.0 (ec44c6c)
+Local modifications:
+
+None.
diff --git a/extern/gmock/README.md b/extern/gmock/README.md
new file mode 100644
index 0000000..332beab
--- /dev/null
+++ b/extern/gmock/README.md
@@ -0,0 +1,333 @@
+## Google Mock ##
+
+The Google C++ mocking framework.
+
+### Overview ###
+
+Google's framework for writing and using C++ mock classes.
+It can help you derive better designs of your system and write better tests.
+
+It is inspired by:
+
+  * [jMock](http://www.jmock.org/),
+  * [EasyMock](http://www.easymock.org/), and
+  * [Hamcrest](http://code.google.com/p/hamcrest/),
+
+and designed with C++'s specifics in mind.
+
+Google mock:
+
+  * lets you create mock classes trivially using simple macros.
+  * supports a rich set of matchers and actions.
+  * handles unordered, partially ordered, or completely ordered expectations.
+  * is extensible by users.
+
+We hope you find it useful!
+
+### Features ###
+
+  * Provides a declarative syntax for defining mocks.
+  * Can easily define partial (hybrid) mocks, which are a cross of real
+    and mock objects.
+  * Handles functions of arbitrary types and overloaded functions.
+  * Comes with a rich set of matchers for validating function arguments.
+  * Uses an intuitive syntax for controlling the behavior of a mock.
+  * Does automatic verification of expectations (no record-and-replay needed).
+  * Allows arbitrary (partial) ordering constraints on
+    function calls to be expressed,.
+  * Lets a user extend it by defining new matchers and actions.
+  * Does not use exceptions.
+  * Is easy to learn and use.
+
+Please see the project page above for more information as well as the
+mailing list for questions, discussions, and development.  There is
+also an IRC channel on OFTC (irc.oftc.net) #gtest available.  Please
+join us!
+
+Please note that code under [scripts/generator](scripts/generator/) is
+from [cppclean](http://code.google.com/p/cppclean/) and released under
+the Apache License, which is different from Google Mock's license.
+
+## Getting Started ##
+
+If you are new to the project, we suggest that you read the user
+documentation in the following order:
+
+  * Learn the [basics](../googletest/docs/Primer.md) of
+    Google Test, if you choose to use Google Mock with it (recommended).
+  * Read [Google Mock for Dummies](docs/ForDummies.md).
+  * Read the instructions below on how to build Google Mock.
+
+You can also watch Zhanyong's [talk](http://www.youtube.com/watch?v=sYpCyLI47rM) on Google Mock's usage and implementation.
+
+Once you understand the basics, check out the rest of the docs:
+
+  * [CheatSheet](docs/CheatSheet.md) - all the commonly used stuff
+    at a glance.
+  * [CookBook](docs/CookBook.md) - recipes for getting things done,
+    including advanced techniques.
+
+If you need help, please check the
+[KnownIssues](docs/KnownIssues.md) and
+[FrequentlyAskedQuestions](docs/FrequentlyAskedQuestions.md) before
+posting a question on the
+[discussion group](http://groups.google.com/group/googlemock).
+
+
+### Using Google Mock Without Google Test ###
+
+Google Mock is not a testing framework itself.  Instead, it needs a
+testing framework for writing tests.  Google Mock works seamlessly
+with [Google Test](http://code.google.com/p/googletest/), but
+you can also use it with [any C++ testing framework](googlemock/ForDummies.md#Using_Google_Mock_with_Any_Testing_Framework).
+
+### Requirements for End Users ###
+
+Google Mock is implemented on top of [Google Test](
+http://github.com/google/googletest/), and depends on it.
+You must use the bundled version of Google Test when using Google Mock.
+
+You can also easily configure Google Mock to work with another testing
+framework, although it will still need Google Test.  Please read
+["Using_Google_Mock_with_Any_Testing_Framework"](
+    docs/ForDummies.md#Using_Google_Mock_with_Any_Testing_Framework)
+for instructions.
+
+Google Mock depends on advanced C++ features and thus requires a more
+modern compiler. The following are needed to use Google Mock:
+
+#### Linux Requirements ####
+
+  * GNU-compatible Make or "gmake"
+  * POSIX-standard shell
+  * POSIX(-2) Regular Expressions (regex.h)
+  * C++98-standard-compliant compiler (e.g. GCC 3.4 or newer)
+
+#### Windows Requirements ####
+
+  * Microsoft Visual C++ 8.0 SP1 or newer
+
+#### Mac OS X Requirements ####
+
+  * Mac OS X 10.4 Tiger or newer
+  * Developer Tools Installed
+
+### Requirements for Contributors ###
+
+We welcome patches. If you plan to contribute a patch, you need to
+build Google Mock and its tests, which has further requirements:
+
+  * Automake version 1.9 or newer
+  * Autoconf version 2.59 or newer
+  * Libtool / Libtoolize
+  * Python version 2.3 or newer (for running some of the tests and
+    re-generating certain source files from templates)


@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list