33#include "gtest/gtest-test-part.h"
35#include "gtest/internal/gtest-port.h"
36#include "src/gtest-internal-inl.h"
40using internal::GetUnitTestImpl;
44std::string TestPartResult::ExtractSummary(
const char* message) {
45 const char*
const stack_trace = strstr(message, internal::kStackTraceMarker);
46 return stack_trace ==
nullptr ? message : std::string(message, stack_trace);
50std::ostream& operator<<(std::ostream& os,
const TestPartResult& result) {
51 return os << internal::FormatFileLocation(result.file_name(),
54 << (result.type() == TestPartResult::kSuccess
56 : result.type() == TestPartResult::kSkip
58 : result.type() == TestPartResult::kFatalFailure
60 :
"Non-fatal failure")
62 << result.message() << std::endl;
66void TestPartResultArray::Append(
const TestPartResult& result) {
67 array_.push_back(result);
71const TestPartResult& TestPartResultArray::GetTestPartResult(
int index)
const {
72 if (index < 0 || index >= size()) {
73 printf(
"\nInvalid index (%d) into TestPartResultArray.\n", index);
74 internal::posix::Abort();
77 return array_[
static_cast<size_t>(index)];
81int TestPartResultArray::size()
const {
82 return static_cast<int>(array_.size());
87HasNewFatalFailureHelper::HasNewFatalFailureHelper()
88 : has_new_fatal_failure_(false),
89 original_reporter_(GetUnitTestImpl()->
90 GetTestPartResultReporterForCurrentThread()) {
91 GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
this);
94HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
95 GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
99void HasNewFatalFailureHelper::ReportTestPartResult(
100 const TestPartResult& result) {
101 if (result.fatally_failed())
102 has_new_fatal_failure_ =
true;
103 original_reporter_->ReportTestPartResult(result);