diff --git a/CMakeLists.txt b/CMakeLists.txt index c784f3c7c..0567ae7da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.16) project(googletest-distribution) -set(GOOGLETEST_VERSION 1.16.0) +set(GOOGLETEST_VERSION 1.17.0) if(NOT CYGWIN AND NOT MSYS AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL QNX) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/googletest/src/gtest-internal-inl.h b/googletest/src/gtest-internal-inl.h index 2ebfcd39e..f3495da82 100644 --- a/googletest/src/gtest-internal-inl.h +++ b/googletest/src/gtest-internal-inl.h @@ -822,6 +822,10 @@ class GTEST_API_ UnitTestImpl { // UnitTest::Run() starts. bool catch_exceptions() const { return catch_exceptions_; } + const std::vector& global_env_failures() const { + return global_env_failures_; + } + private: // Returns true if a warning should be issued if no tests match the test // filter flag. @@ -966,6 +970,9 @@ class GTEST_API_ UnitTestImpl { // A per-thread stack of traces created by the SCOPED_TRACE() macro. internal::ThreadLocal > gtest_trace_stack_; + // Stores failures that occur in global environment setup/teardown. + std::vector global_env_failures_; + // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() // starts. bool catch_exceptions_; diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index ac90786a0..acedeaeb5 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -1096,8 +1096,11 @@ DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( void DefaultGlobalTestPartResultReporter::ReportTestPartResult( const TestPartResult& result) { + if (unit_test_->current_test_info() == nullptr) { + unit_test_->global_env_failures_.push_back(result); + return; + } unit_test_->current_test_result()->AddTestPartResult(result); - unit_test_->listeners()->repeater()->OnTestPartResult(result); } DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( @@ -1106,7 +1109,11 @@ DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( void DefaultPerThreadTestPartResultReporter::ReportTestPartResult( const TestPartResult& result) { - unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result); + if (unit_test_->current_test_info() == nullptr) { + unit_test_->global_env_failures_.push_back(result); + return; + } + unit_test_->current_test_result()->AddTestPartResult(result); } // Returns the global test part result reporter. @@ -4505,6 +4512,17 @@ void XmlUnitTestResultPrinter::PrintXmlTestsList( for (auto test_suite : test_suites) { PrintXmlTestSuite(stream, *test_suite); } + if (!GetUnitTestImpl()->global_env_failures().empty()) { + *stream << " \n"; + for (const auto& failure : GetUnitTestImpl()->global_env_failures()) { + *stream << " \n"; + } + *stream << " \n"; + } *stream << "\n"; }