Merge branch 'master' into support_xboxone
This commit is contained in:
commit
1489dc8daa
|
@ -88,16 +88,23 @@ endif()
|
||||||
# Google Mock libraries. We build them using more strict warnings than what
|
# Google Mock libraries. We build them using more strict warnings than what
|
||||||
# are used for other targets, to ensure that Google Mock can be compiled by
|
# are used for other targets, to ensure that Google Mock can be compiled by
|
||||||
# a user aggressive about warnings.
|
# a user aggressive about warnings.
|
||||||
cxx_library(gmock
|
if (MSVC)
|
||||||
"${cxx_strict}"
|
cxx_library(gmock
|
||||||
"${gtest_dir}/src/gtest-all.cc"
|
"${cxx_strict}"
|
||||||
src/gmock-all.cc)
|
"${gtest_dir}/src/gtest-all.cc"
|
||||||
|
src/gmock-all.cc)
|
||||||
|
|
||||||
cxx_library(gmock_main
|
cxx_library(gmock_main
|
||||||
"${cxx_strict}"
|
"${cxx_strict}"
|
||||||
"${gtest_dir}/src/gtest-all.cc"
|
"${gtest_dir}/src/gtest-all.cc"
|
||||||
src/gmock-all.cc
|
src/gmock-all.cc
|
||||||
src/gmock_main.cc)
|
src/gmock_main.cc)
|
||||||
|
else()
|
||||||
|
cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
|
||||||
|
target_link_libraries(gmock gtest)
|
||||||
|
cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
|
||||||
|
target_link_libraries(gmock_main gmock)
|
||||||
|
endif()
|
||||||
|
|
||||||
# If the CMake version supports it, attach header directory information
|
# If the CMake version supports it, attach header directory information
|
||||||
# to the targets for when we are part of a parent build (ie being pulled
|
# to the targets for when we are part of a parent build (ie being pulled
|
||||||
|
@ -177,23 +184,33 @@ if (gmock_build_tests)
|
||||||
############################################################
|
############################################################
|
||||||
# C++ tests built with non-standard compiler flags.
|
# C++ tests built with non-standard compiler flags.
|
||||||
|
|
||||||
cxx_library(gmock_main_no_exception "${cxx_no_exception}"
|
if (MSVC)
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
cxx_library(gmock_main_no_exception "${cxx_no_exception}"
|
||||||
|
|
||||||
cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
|
||||||
|
|
||||||
if (NOT MSVC OR MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010.
|
|
||||||
# Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
|
|
||||||
# conflict with our own definitions. Therefore using our own tuple does not
|
|
||||||
# work on those compilers.
|
|
||||||
cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
||||||
|
|
||||||
cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
|
cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
|
||||||
gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
|
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
||||||
endif()
|
|
||||||
|
|
||||||
|
if (MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010.
|
||||||
|
# Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
|
||||||
|
# conflict with our own definitions. Therefore using our own tuple does not
|
||||||
|
# work on those compilers.
|
||||||
|
cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
|
||||||
|
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
||||||
|
|
||||||
|
cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
|
||||||
|
gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc)
|
||||||
|
target_link_libraries(gmock_main_no_exception gmock)
|
||||||
|
|
||||||
|
cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc)
|
||||||
|
target_link_libraries(gmock_main_no_rtti gmock)
|
||||||
|
|
||||||
|
cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" src/gmock_main.cc)
|
||||||
|
target_link_libraries(gmock_main_use_own_tuple gmock)
|
||||||
|
endif()
|
||||||
cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
|
cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
|
||||||
gmock_main_no_exception test/gmock-more-actions_test.cc)
|
gmock_main_no_exception test/gmock-more-actions_test.cc)
|
||||||
|
|
||||||
|
|
|
@ -787,15 +787,17 @@ If a test sub-routine is called from several places, when an assertion
|
||||||
inside it fails, it can be hard to tell which invocation of the
|
inside it fails, it can be hard to tell which invocation of the
|
||||||
sub-routine the failure is from. You can alleviate this problem using
|
sub-routine the failure is from. You can alleviate this problem using
|
||||||
extra logging or custom failure messages, but that usually clutters up
|
extra logging or custom failure messages, but that usually clutters up
|
||||||
your tests. A better solution is to use the `SCOPED_TRACE` macro:
|
your tests. A better solution is to use the `SCOPED_TRACE` macro or
|
||||||
|
the `ScopedTrace` utility:
|
||||||
|
|
||||||
| `SCOPED_TRACE(`_message_`);` |
|
| `SCOPED_TRACE(`_message_`);` | `::testing::ScopedTrace trace(`_"file\_path"_`, `_line\_number_`, `_message_`);` |
|
||||||
|:-----------------------------|
|
|:-----------------------------|:---------------------------------------------------------------------------------|
|
||||||
|
|
||||||
where _message_ can be anything streamable to `std::ostream`. This
|
where `message` can be anything streamable to `std::ostream`. `SCOPED_TRACE`
|
||||||
macro will cause the current file name, line number, and the given
|
macro will cause the current file name, line number, and the given message to be
|
||||||
message to be added in every failure message. The effect will be
|
added in every failure message. `ScopedTrace` accepts explicit file name and
|
||||||
undone when the control leaves the current lexical scope.
|
line number in arguments, which is useful for writing test helpers. The effect
|
||||||
|
will be undone when the control leaves the current lexical scope.
|
||||||
|
|
||||||
For example,
|
For example,
|
||||||
|
|
||||||
|
|
|
@ -349,6 +349,15 @@ GTEST_API_ AssertionResult AssertionFailure();
|
||||||
// Deprecated; use AssertionFailure() << msg.
|
// Deprecated; use AssertionFailure() << msg.
|
||||||
GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
|
GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
|
|
||||||
|
// Includes the auto-generated header that implements a family of generic
|
||||||
|
// predicate assertion macros. This include comes late because it relies on
|
||||||
|
// APIs declared above.
|
||||||
|
#include "gtest/gtest_pred_impl.h"
|
||||||
|
|
||||||
|
namespace testing {
|
||||||
|
|
||||||
// The abstract class that all tests inherit from.
|
// The abstract class that all tests inherit from.
|
||||||
//
|
//
|
||||||
// In Google Test, a unit test program contains one or many TestCases, and
|
// In Google Test, a unit test program contains one or many TestCases, and
|
||||||
|
@ -359,7 +368,7 @@ GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
|
||||||
// this for you.
|
// this for you.
|
||||||
//
|
//
|
||||||
// The only time you derive from Test is when defining a test fixture
|
// The only time you derive from Test is when defining a test fixture
|
||||||
// to be used a TEST_F. For example:
|
// to be used in a TEST_F. For example:
|
||||||
//
|
//
|
||||||
// class FooTest : public testing::Test {
|
// class FooTest : public testing::Test {
|
||||||
// protected:
|
// protected:
|
||||||
|
@ -554,9 +563,8 @@ class GTEST_API_ TestResult {
|
||||||
// Returns the elapsed time, in milliseconds.
|
// Returns the elapsed time, in milliseconds.
|
||||||
TimeInMillis elapsed_time() const { return elapsed_time_; }
|
TimeInMillis elapsed_time() const { return elapsed_time_; }
|
||||||
|
|
||||||
// Returns the i-th test part result among all the results. i can range
|
// Returns the i-th test part result among all the results. i can range from 0
|
||||||
// from 0 to test_property_count() - 1. If i is not in that range, aborts
|
// to total_part_count() - 1. If i is not in that range, aborts the program.
|
||||||
// the program.
|
|
||||||
const TestPartResult& GetTestPartResult(int i) const;
|
const TestPartResult& GetTestPartResult(int i) const;
|
||||||
|
|
||||||
// Returns the i-th test property. i can range from 0 to
|
// Returns the i-th test property. i can range from 0 to
|
||||||
|
@ -699,7 +707,7 @@ class GTEST_API_ TestInfo {
|
||||||
|
|
||||||
// Returns true iff this test will appear in the XML report.
|
// Returns true iff this test will appear in the XML report.
|
||||||
bool is_reportable() const {
|
bool is_reportable() const {
|
||||||
// For now, the XML report includes all tests matching the filter.
|
// The XML report includes tests matching the filter.
|
||||||
// In the future, we may trim tests that are excluded because of
|
// In the future, we may trim tests that are excluded because of
|
||||||
// sharding.
|
// sharding.
|
||||||
return matches_filter_;
|
return matches_filter_;
|
||||||
|
@ -1291,9 +1299,9 @@ class GTEST_API_ UnitTest {
|
||||||
|
|
||||||
// These classes and functions are friends as they need to access private
|
// These classes and functions are friends as they need to access private
|
||||||
// members of UnitTest.
|
// members of UnitTest.
|
||||||
|
friend class ScopedTrace;
|
||||||
friend class Test;
|
friend class Test;
|
||||||
friend class internal::AssertHelper;
|
friend class internal::AssertHelper;
|
||||||
friend class internal::ScopedTrace;
|
|
||||||
friend class internal::StreamingListenerTest;
|
friend class internal::StreamingListenerTest;
|
||||||
friend class internal::UnitTestRecordPropertyTestHelper;
|
friend class internal::UnitTestRecordPropertyTestHelper;
|
||||||
friend Environment* AddGlobalTestEnvironment(Environment* env);
|
friend Environment* AddGlobalTestEnvironment(Environment* env);
|
||||||
|
@ -1782,7 +1790,6 @@ template <typename T>
|
||||||
class TestWithParam : public Test, public WithParamInterface<T> {
|
class TestWithParam : public Test, public WithParamInterface<T> {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Macros for indicating success/failure in test code.
|
// Macros for indicating success/failure in test code.
|
||||||
|
|
||||||
// ADD_FAILURE unconditionally adds a failure to the current test.
|
// ADD_FAILURE unconditionally adds a failure to the current test.
|
||||||
|
@ -1855,22 +1862,18 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||||
// AssertionResult. For more information on how to use AssertionResult with
|
// AssertionResult. For more information on how to use AssertionResult with
|
||||||
// these macros see comments on that class.
|
// these macros see comments on that class.
|
||||||
#define EXPECT_TRUE(condition) \
|
#define EXPECT_TRUE(condition) \
|
||||||
GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
|
GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
|
||||||
GTEST_NONFATAL_FAILURE_)
|
GTEST_NONFATAL_FAILURE_)
|
||||||
#define EXPECT_FALSE(condition) \
|
#define EXPECT_FALSE(condition) \
|
||||||
GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
|
GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
|
||||||
GTEST_NONFATAL_FAILURE_)
|
GTEST_NONFATAL_FAILURE_)
|
||||||
#define ASSERT_TRUE(condition) \
|
#define ASSERT_TRUE(condition) \
|
||||||
GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
|
GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
|
||||||
GTEST_FATAL_FAILURE_)
|
GTEST_FATAL_FAILURE_)
|
||||||
#define ASSERT_FALSE(condition) \
|
#define ASSERT_FALSE(condition) \
|
||||||
GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
|
GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
|
||||||
GTEST_FATAL_FAILURE_)
|
GTEST_FATAL_FAILURE_)
|
||||||
|
|
||||||
// Includes the auto-generated header that implements a family of
|
|
||||||
// generic predicate assertion macros.
|
|
||||||
#include "gtest/gtest_pred_impl.h"
|
|
||||||
|
|
||||||
// Macros for testing equalities and inequalities.
|
// Macros for testing equalities and inequalities.
|
||||||
//
|
//
|
||||||
// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
|
// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
|
||||||
|
@ -1912,8 +1915,8 @@ class TestWithParam : public Test, public WithParamInterface<T> {
|
||||||
//
|
//
|
||||||
// Examples:
|
// Examples:
|
||||||
//
|
//
|
||||||
// EXPECT_NE(5, Foo());
|
// EXPECT_NE(Foo(), 5);
|
||||||
// EXPECT_EQ(NULL, a_pointer);
|
// EXPECT_EQ(a_pointer, NULL);
|
||||||
// ASSERT_LT(i, array_size);
|
// ASSERT_LT(i, array_size);
|
||||||
// ASSERT_GT(records.size(), 0) << "There is no record left.";
|
// ASSERT_GT(records.size(), 0) << "There is no record left.";
|
||||||
|
|
||||||
|
@ -2099,6 +2102,57 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
|
||||||
#define EXPECT_NO_FATAL_FAILURE(statement) \
|
#define EXPECT_NO_FATAL_FAILURE(statement) \
|
||||||
GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
|
GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
|
||||||
|
|
||||||
|
// Causes a trace (including the given source file path and line number,
|
||||||
|
// and the given message) to be included in every test failure message generated
|
||||||
|
// by code in the scope of the lifetime of an instance of this class. The effect
|
||||||
|
// is undone with the destruction of the instance.
|
||||||
|
//
|
||||||
|
// The message argument can be anything streamable to std::ostream.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// testing::ScopedTrace trace("file.cc", 123, "message");
|
||||||
|
//
|
||||||
|
class GTEST_API_ ScopedTrace {
|
||||||
|
public:
|
||||||
|
// The c'tor pushes the given source file location and message onto
|
||||||
|
// a trace stack maintained by Google Test.
|
||||||
|
|
||||||
|
// Template version. Uses Message() to convert the values into strings.
|
||||||
|
// Slow, but flexible.
|
||||||
|
template <typename T>
|
||||||
|
ScopedTrace(const char* file, int line, const T& message) {
|
||||||
|
PushTrace(file, line, (Message() << message).GetString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optimize for some known types.
|
||||||
|
ScopedTrace(const char* file, int line, const char* message) {
|
||||||
|
PushTrace(file, line, message ? message : "(null)");
|
||||||
|
}
|
||||||
|
|
||||||
|
#if GTEST_HAS_GLOBAL_STRING
|
||||||
|
ScopedTrace(const char* file, int line, const ::string& message) {
|
||||||
|
PushTrace(file, line, message);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ScopedTrace(const char* file, int line, const std::string& message) {
|
||||||
|
PushTrace(file, line, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The d'tor pops the info pushed by the c'tor.
|
||||||
|
//
|
||||||
|
// Note that the d'tor is not virtual in order to be efficient.
|
||||||
|
// Don't inherit from ScopedTrace!
|
||||||
|
~ScopedTrace();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void PushTrace(const char* file, int line, std::string message);
|
||||||
|
|
||||||
|
GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
|
||||||
|
} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
|
||||||
|
// c'tor and d'tor. Therefore it doesn't
|
||||||
|
// need to be used otherwise.
|
||||||
|
|
||||||
// Causes a trace (including the source file path, the current line
|
// Causes a trace (including the source file path, the current line
|
||||||
// number, and the given message) to be included in every test failure
|
// number, and the given message) to be included in every test failure
|
||||||
// message generated by code in the current scope. The effect is
|
// message generated by code in the current scope. The effect is
|
||||||
|
@ -2115,7 +2169,7 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
|
||||||
// Therefore, a SCOPED_TRACE() would (correctly) only affect the
|
// Therefore, a SCOPED_TRACE() would (correctly) only affect the
|
||||||
// assertions in its own thread.
|
// assertions in its own thread.
|
||||||
#define SCOPED_TRACE(message) \
|
#define SCOPED_TRACE(message) \
|
||||||
::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
|
::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
|
||||||
__FILE__, __LINE__, (message))
|
__FILE__, __LINE__, (message))
|
||||||
|
|
||||||
|
|
||||||
|
@ -2212,8 +2266,8 @@ bool StaticAssertTypeEq() {
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// TEST_F(FooTest, ReturnsElementCountCorrectly) {
|
// TEST_F(FooTest, ReturnsElementCountCorrectly) {
|
||||||
// EXPECT_EQ(0, a_.size());
|
// EXPECT_EQ(a_.size(), 0);
|
||||||
// EXPECT_EQ(1, b_.size());
|
// EXPECT_EQ(b_.size(), 1);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
#define TEST_F(test_fixture, test_name)\
|
#define TEST_F(test_fixture, test_name)\
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
|
// This file is AUTOMATICALLY GENERATED on 01/02/2018 by command
|
||||||
// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
|
// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
|
||||||
//
|
//
|
||||||
// Implements a family of generic predicate assertion macros.
|
// Implements a family of generic predicate assertion macros.
|
||||||
|
@ -35,10 +35,9 @@
|
||||||
#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
||||||
#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
||||||
|
|
||||||
// Makes sure this header is not included before gtest.h.
|
#include "gtest/gtest.h"
|
||||||
#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
|
|
||||||
# error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
|
namespace testing {
|
||||||
#endif // GTEST_INCLUDE_GTEST_GTEST_H_
|
|
||||||
|
|
||||||
// This header implements a family of generic predicate assertion
|
// This header implements a family of generic predicate assertion
|
||||||
// macros:
|
// macros:
|
||||||
|
@ -66,8 +65,6 @@
|
||||||
// We also define the EXPECT_* variations.
|
// We also define the EXPECT_* variations.
|
||||||
//
|
//
|
||||||
// For now we only support predicates whose arity is at most 5.
|
// For now we only support predicates whose arity is at most 5.
|
||||||
// Please email googletestframework@googlegroups.com if you need
|
|
||||||
// support for higher arities.
|
|
||||||
|
|
||||||
// GTEST_ASSERT_ is the basic statement to which all of the assertions
|
// GTEST_ASSERT_ is the basic statement to which all of the assertions
|
||||||
// in this file reduce. Don't use this in your code.
|
// in this file reduce. Don't use this in your code.
|
||||||
|
@ -355,4 +352,6 @@ AssertionResult AssertPred5Helper(const char* pred_text,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace testing
|
||||||
|
|
||||||
#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
|
||||||
|
|
|
@ -95,7 +95,6 @@ template <typename T>
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
struct TraceInfo; // Information about a trace point.
|
struct TraceInfo; // Information about a trace point.
|
||||||
class ScopedTrace; // Implements scoped trace.
|
|
||||||
class TestInfoImpl; // Opaque implementation of TestInfo
|
class TestInfoImpl; // Opaque implementation of TestInfo
|
||||||
class UnitTestImpl; // Opaque implementation of UnitTest
|
class UnitTestImpl; // Opaque implementation of UnitTest
|
||||||
|
|
||||||
|
@ -151,53 +150,11 @@ class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
|
||||||
|
|
||||||
#endif // GTEST_HAS_EXCEPTIONS
|
#endif // GTEST_HAS_EXCEPTIONS
|
||||||
|
|
||||||
// A helper class for creating scoped traces in user programs.
|
|
||||||
class GTEST_API_ ScopedTrace {
|
|
||||||
public:
|
|
||||||
// The c'tor pushes the given source file location and message onto
|
|
||||||
// a trace stack maintained by Google Test.
|
|
||||||
|
|
||||||
// Template version. Uses Message() to convert the values into strings.
|
|
||||||
// Slow, but flexible.
|
|
||||||
template <typename T>
|
|
||||||
ScopedTrace(const char* file, int line, const T& message) {
|
|
||||||
PushTrace(file, line, (Message() << message).GetString());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Optimize for some known types.
|
|
||||||
ScopedTrace(const char* file, int line, const char* message) {
|
|
||||||
PushTrace(file, line, message ? message : "(null)");
|
|
||||||
}
|
|
||||||
|
|
||||||
#if GTEST_HAS_GLOBAL_STRING
|
|
||||||
ScopedTrace(const char* file, int line, const ::string& message) {
|
|
||||||
PushTrace(file, line, message);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ScopedTrace(const char* file, int line, const std::string& message) {
|
|
||||||
PushTrace(file, line, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The d'tor pops the info pushed by the c'tor.
|
|
||||||
//
|
|
||||||
// Note that the d'tor is not virtual in order to be efficient.
|
|
||||||
// Don't inherit from ScopedTrace!
|
|
||||||
~ScopedTrace();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void PushTrace(const char* file, int line, std::string message);
|
|
||||||
|
|
||||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
|
|
||||||
} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
|
|
||||||
// c'tor and d'tor. Therefore it doesn't
|
|
||||||
// need to be used otherwise.
|
|
||||||
|
|
||||||
namespace edit_distance {
|
namespace edit_distance {
|
||||||
// Returns the optimal edits to go from 'left' to 'right'.
|
// Returns the optimal edits to go from 'left' to 'right'.
|
||||||
// All edits cost the same, with replace having lower priority than
|
// All edits cost the same, with replace having lower priority than
|
||||||
// add/remove.
|
// add/remove.
|
||||||
// Simple implementation of the Wagner-Fischer algorithm.
|
// Simple implementation of the Wagner–Fischer algorithm.
|
||||||
// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
|
// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
|
||||||
enum EditType { kMatch, kAdd, kRemove, kReplace };
|
enum EditType { kMatch, kAdd, kRemove, kReplace };
|
||||||
GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
|
GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
|
||||||
|
@ -650,7 +607,7 @@ class TypeParameterizedTest {
|
||||||
// Types). Valid values for 'index' are [0, N - 1] where N is the
|
// Types). Valid values for 'index' are [0, N - 1] where N is the
|
||||||
// length of Types.
|
// length of Types.
|
||||||
static bool Register(const char* prefix,
|
static bool Register(const char* prefix,
|
||||||
CodeLocation code_location,
|
const CodeLocation& code_location,
|
||||||
const char* case_name, const char* test_names,
|
const char* case_name, const char* test_names,
|
||||||
int index) {
|
int index) {
|
||||||
typedef typename Types::Head Type;
|
typedef typename Types::Head Type;
|
||||||
|
@ -681,7 +638,7 @@ class TypeParameterizedTest {
|
||||||
template <GTEST_TEMPLATE_ Fixture, class TestSel>
|
template <GTEST_TEMPLATE_ Fixture, class TestSel>
|
||||||
class TypeParameterizedTest<Fixture, TestSel, Types0> {
|
class TypeParameterizedTest<Fixture, TestSel, Types0> {
|
||||||
public:
|
public:
|
||||||
static bool Register(const char* /*prefix*/, CodeLocation,
|
static bool Register(const char* /*prefix*/, const CodeLocation&,
|
||||||
const char* /*case_name*/, const char* /*test_names*/,
|
const char* /*case_name*/, const char* /*test_names*/,
|
||||||
int /*index*/) {
|
int /*index*/) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -727,7 +684,7 @@ class TypeParameterizedTestCase {
|
||||||
template <GTEST_TEMPLATE_ Fixture, typename Types>
|
template <GTEST_TEMPLATE_ Fixture, typename Types>
|
||||||
class TypeParameterizedTestCase<Fixture, Templates0, Types> {
|
class TypeParameterizedTestCase<Fixture, Templates0, Types> {
|
||||||
public:
|
public:
|
||||||
static bool Register(const char* /*prefix*/, CodeLocation,
|
static bool Register(const char* /*prefix*/, const CodeLocation&,
|
||||||
const TypedTestCasePState* /*state*/,
|
const TypedTestCasePState* /*state*/,
|
||||||
const char* /*case_name*/, const char* /*test_names*/) {
|
const char* /*case_name*/, const char* /*test_names*/) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -3835,26 +3835,6 @@ void StreamingListener::SocketWriter::MakeConnection() {
|
||||||
// End of class Streaming Listener
|
// End of class Streaming Listener
|
||||||
#endif // GTEST_CAN_STREAM_RESULTS__
|
#endif // GTEST_CAN_STREAM_RESULTS__
|
||||||
|
|
||||||
// Class ScopedTrace
|
|
||||||
|
|
||||||
// Pushes the given source file location and message onto a per-thread
|
|
||||||
// trace stack maintained by Google Test.
|
|
||||||
void ScopedTrace::PushTrace(const char* file, int line, std::string message) {
|
|
||||||
TraceInfo trace;
|
|
||||||
trace.file = file;
|
|
||||||
trace.line = line;
|
|
||||||
trace.message.swap(message);
|
|
||||||
|
|
||||||
UnitTest::GetInstance()->PushGTestTrace(trace);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pops the info pushed by the c'tor.
|
|
||||||
ScopedTrace::~ScopedTrace()
|
|
||||||
GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
|
|
||||||
UnitTest::GetInstance()->PopGTestTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// class OsStackTraceGetter
|
// class OsStackTraceGetter
|
||||||
|
|
||||||
const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
|
const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
|
||||||
|
@ -5415,4 +5395,23 @@ std::string TempDir() {
|
||||||
#endif // GTEST_OS_WINDOWS_MOBILE
|
#endif // GTEST_OS_WINDOWS_MOBILE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Class ScopedTrace
|
||||||
|
|
||||||
|
// Pushes the given source file location and message onto a per-thread
|
||||||
|
// trace stack maintained by Google Test.
|
||||||
|
void ScopedTrace::PushTrace(const char* file, int line, std::string message) {
|
||||||
|
internal::TraceInfo trace;
|
||||||
|
trace.file = file;
|
||||||
|
trace.line = line;
|
||||||
|
trace.message.swap(message);
|
||||||
|
|
||||||
|
UnitTest::GetInstance()->PushGTestTrace(trace);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pops the info pushed by the c'tor.
|
||||||
|
ScopedTrace::~ScopedTrace()
|
||||||
|
GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
|
||||||
|
UnitTest::GetInstance()->PopGTestTrace();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright 2017 Google Inc.
|
# Copyright 2017 Google Inc.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -119,3 +119,245 @@ cc_test(
|
||||||
"//:gtest",
|
"//:gtest",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
# Py tests
|
||||||
|
|
||||||
|
py_library(
|
||||||
|
name = "gtest_test_utils",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_test_utils.py"],
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_help_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_help_test_.cc"],
|
||||||
|
deps = ["//:gtest_main"],
|
||||||
|
)
|
||||||
|
py_test(
|
||||||
|
name = "gtest_help_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_help_test.py"],
|
||||||
|
data = [":gtest_help_test_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_output_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_output_test_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_output_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_output_test.py"],
|
||||||
|
data = [
|
||||||
|
"gtest_output_test_golden_lin.txt",
|
||||||
|
":gtest_output_test_",
|
||||||
|
],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_color_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_color_test_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
py_test(
|
||||||
|
name = "gtest_color_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_color_test.py"],
|
||||||
|
data = [":gtest_color_test_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_env_var_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_env_var_test_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_env_var_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_env_var_test.py"],
|
||||||
|
data = [":gtest_env_var_test_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_filter_unittest_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_filter_unittest_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_filter_unittest",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_filter_unittest.py"],
|
||||||
|
data = [":gtest_filter_unittest_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_break_on_failure_unittest_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_break_on_failure_unittest_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_break_on_failure_unittest",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_break_on_failure_unittest.py"],
|
||||||
|
data = [":gtest_break_on_failure_unittest_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_throw_on_failure_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_throw_on_failure_test_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_throw_on_failure_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_throw_on_failure_test.py"],
|
||||||
|
data = [":gtest_throw_on_failure_test_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_list_tests_unittest_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_list_tests_unittest_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_list_tests_unittest",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_list_tests_unittest.py"],
|
||||||
|
data = [":gtest_list_tests_unittest_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_shuffle_test_",
|
||||||
|
srcs = ["gtest_shuffle_test_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_shuffle_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_shuffle_test.py"],
|
||||||
|
data = [":gtest_shuffle_test_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_catch_exceptions_no_ex_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_catch_exceptions_test_.cc"],
|
||||||
|
deps = ["//:gtest_main"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_catch_exceptions_ex_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_catch_exceptions_test_.cc"],
|
||||||
|
copts = ["-fexceptions"],
|
||||||
|
deps = ["//:gtest_main"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_catch_exceptions_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_catch_exceptions_test.py"],
|
||||||
|
data = [
|
||||||
|
":gtest_catch_exceptions_ex_test_",
|
||||||
|
":gtest_catch_exceptions_no_ex_test_",
|
||||||
|
],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_xml_output_unittest_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_xml_output_unittest_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_test(
|
||||||
|
name = "gtest_no_test_unittest",
|
||||||
|
size = "small",
|
||||||
|
srcs = ["gtest_no_test_unittest.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_xml_output_unittest",
|
||||||
|
size = "small",
|
||||||
|
srcs = [
|
||||||
|
"gtest_xml_output_unittest.py",
|
||||||
|
"gtest_xml_test_utils.py",
|
||||||
|
],
|
||||||
|
data = [
|
||||||
|
# We invoke gtest_no_test_unittest to verify the XML output
|
||||||
|
# when the test program contains no test definition.
|
||||||
|
":gtest_no_test_unittest",
|
||||||
|
":gtest_xml_output_unittest_",
|
||||||
|
],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_xml_outfile1_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_xml_outfile1_test_.cc"],
|
||||||
|
deps = ["//:gtest_main"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_xml_outfile2_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_xml_outfile2_test_.cc"],
|
||||||
|
deps = ["//:gtest_main"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_xml_outfiles_test",
|
||||||
|
size = "small",
|
||||||
|
srcs = [
|
||||||
|
"gtest_xml_outfiles_test.py",
|
||||||
|
"gtest_xml_test_utils.py",
|
||||||
|
],
|
||||||
|
data = [
|
||||||
|
":gtest_xml_outfile1_test_",
|
||||||
|
":gtest_xml_outfile2_test_",
|
||||||
|
],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "gtest_uninitialized_test_",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = ["gtest_uninitialized_test_.cc"],
|
||||||
|
deps = ["//:gtest"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_test(
|
||||||
|
name = "gtest_uninitialized_test",
|
||||||
|
size = "medium",
|
||||||
|
srcs = ["gtest_uninitialized_test.py"],
|
||||||
|
data = [":gtest_uninitialized_test_"],
|
||||||
|
deps = [":gtest_test_utils"],
|
||||||
|
)
|
||||||
|
|
|
@ -99,7 +99,8 @@ def RemoveLocations(test_output):
|
||||||
'FILE_NAME:#: '.
|
'FILE_NAME:#: '.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return re.sub(r'.*[/\\](.+)(\:\d+|\(\d+\))\: ', r'\1:#: ', test_output)
|
return re.sub(r'.*[/\\]((gtest_output_test_|gtest).cc)(\:\d+|\(\d+\))\: ',
|
||||||
|
r'\1:#: ', test_output)
|
||||||
|
|
||||||
|
|
||||||
def RemoveStackTraceDetails(output):
|
def RemoveStackTraceDetails(output):
|
||||||
|
|
|
@ -315,6 +315,13 @@ TEST(SCOPED_TRACETest, WorksConcurrently) {
|
||||||
}
|
}
|
||||||
#endif // GTEST_IS_THREADSAFE
|
#endif // GTEST_IS_THREADSAFE
|
||||||
|
|
||||||
|
// Tests basic functionality of the ScopedTrace utility (most of its features
|
||||||
|
// are already tested in SCOPED_TRACETest).
|
||||||
|
TEST(ScopedTraceTest, WithExplicitFileAndLine) {
|
||||||
|
testing::ScopedTrace trace("explicit_file.cc", 123, "expected trace message");
|
||||||
|
ADD_FAILURE() << "Check that the trace is attached to a particular location.";
|
||||||
|
}
|
||||||
|
|
||||||
TEST(DisabledTestsWarningTest,
|
TEST(DisabledTestsWarningTest,
|
||||||
DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning) {
|
DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning) {
|
||||||
// This test body is intentionally empty. Its sole purpose is for
|
// This test body is intentionally empty. Its sole purpose is for
|
||||||
|
|
|
@ -8,7 +8,7 @@ gtest_output_test_.cc:#: Failure
|
||||||
Expected equality of these values:
|
Expected equality of these values:
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
[0;32m[==========] [mRunning 66 tests from 29 test cases.
|
[0;32m[==========] [mRunning 67 tests from 30 test cases.
|
||||||
[0;32m[----------] [mGlobal test environment set-up.
|
[0;32m[----------] [mGlobal test environment set-up.
|
||||||
FooEnvironment::SetUp() called.
|
FooEnvironment::SetUp() called.
|
||||||
BarEnvironment::SetUp() called.
|
BarEnvironment::SetUp() called.
|
||||||
|
@ -212,6 +212,14 @@ gtest_output_test_.cc:#: Failure
|
||||||
Failed
|
Failed
|
||||||
Expected failure #6 (in thread A, no trace alive).
|
Expected failure #6 (in thread A, no trace alive).
|
||||||
[0;31m[ FAILED ] [mSCOPED_TRACETest.WorksConcurrently
|
[0;31m[ FAILED ] [mSCOPED_TRACETest.WorksConcurrently
|
||||||
|
[0;32m[----------] [m1 test from ScopedTraceTest
|
||||||
|
[0;32m[ RUN ] [mScopedTraceTest.WithExplicitFileAndLine
|
||||||
|
gtest_output_test_.cc:#: Failure
|
||||||
|
Failed
|
||||||
|
Check that the trace is attached to a particular location.
|
||||||
|
Google Test trace:
|
||||||
|
explicit_file.cc:123: expected trace message
|
||||||
|
[0;31m[ FAILED ] [mScopedTraceTest.WithExplicitFileAndLine
|
||||||
[0;32m[----------] [m1 test from NonFatalFailureInFixtureConstructorTest
|
[0;32m[----------] [m1 test from NonFatalFailureInFixtureConstructorTest
|
||||||
[0;32m[ RUN ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
|
[0;32m[ RUN ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
|
||||||
(expecting 5 failures)
|
(expecting 5 failures)
|
||||||
|
@ -636,9 +644,9 @@ FooEnvironment::TearDown() called.
|
||||||
gtest_output_test_.cc:#: Failure
|
gtest_output_test_.cc:#: Failure
|
||||||
Failed
|
Failed
|
||||||
Expected fatal failure.
|
Expected fatal failure.
|
||||||
[0;32m[==========] [m66 tests from 29 test cases ran.
|
[0;32m[==========] [m67 tests from 30 test cases ran.
|
||||||
[0;32m[ PASSED ] [m22 tests.
|
[0;32m[ PASSED ] [m22 tests.
|
||||||
[0;31m[ FAILED ] [m44 tests, listed below:
|
[0;31m[ FAILED ] [m45 tests, listed below:
|
||||||
[0;31m[ FAILED ] [mNonfatalFailureTest.EscapesStringOperands
|
[0;31m[ FAILED ] [mNonfatalFailureTest.EscapesStringOperands
|
||||||
[0;31m[ FAILED ] [mNonfatalFailureTest.DiffForLongStrings
|
[0;31m[ FAILED ] [mNonfatalFailureTest.DiffForLongStrings
|
||||||
[0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInSubroutine
|
[0;31m[ FAILED ] [mFatalFailureTest.FatalFailureInSubroutine
|
||||||
|
@ -651,6 +659,7 @@ Expected fatal failure.
|
||||||
[0;31m[ FAILED ] [mSCOPED_TRACETest.CanBeNested
|
[0;31m[ FAILED ] [mSCOPED_TRACETest.CanBeNested
|
||||||
[0;31m[ FAILED ] [mSCOPED_TRACETest.CanBeRepeated
|
[0;31m[ FAILED ] [mSCOPED_TRACETest.CanBeRepeated
|
||||||
[0;31m[ FAILED ] [mSCOPED_TRACETest.WorksConcurrently
|
[0;31m[ FAILED ] [mSCOPED_TRACETest.WorksConcurrently
|
||||||
|
[0;31m[ FAILED ] [mScopedTraceTest.WithExplicitFileAndLine
|
||||||
[0;31m[ FAILED ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
|
[0;31m[ FAILED ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
|
||||||
[0;31m[ FAILED ] [mFatalFailureInFixtureConstructorTest.FailureInConstructor
|
[0;31m[ FAILED ] [mFatalFailureInFixtureConstructorTest.FailureInConstructor
|
||||||
[0;31m[ FAILED ] [mNonFatalFailureInSetUpTest.FailureInSetUp
|
[0;31m[ FAILED ] [mNonFatalFailureInSetUpTest.FailureInSetUp
|
||||||
|
@ -684,7 +693,7 @@ Expected fatal failure.
|
||||||
[0;31m[ FAILED ] [mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
|
[0;31m[ FAILED ] [mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
|
||||||
[0;31m[ FAILED ] [mPrintingStrings/ParamTest.Failure/a, where GetParam() = "a"
|
[0;31m[ FAILED ] [mPrintingStrings/ParamTest.Failure/a, where GetParam() = "a"
|
||||||
|
|
||||||
44 FAILED TESTS
|
45 FAILED TESTS
|
||||||
[0;33m YOU HAVE 1 DISABLED TEST
|
[0;33m YOU HAVE 1 DISABLED TEST
|
||||||
|
|
||||||
[mNote: Google Test filter = FatalFailureTest.*:LoggingTest.*
|
[mNote: Google Test filter = FatalFailureTest.*:LoggingTest.*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user