Merge branch 'master' into fix-printers
This commit is contained in:
commit
8dd1eb5984
|
@ -112,8 +112,8 @@
|
|||
#endif
|
||||
|
||||
#if GTEST_HAS_ABSL
|
||||
#include "absl/types/optional.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "absl/types/optional.h"
|
||||
#endif // GTEST_HAS_ABSL
|
||||
|
||||
namespace testing {
|
||||
|
|
|
@ -40,17 +40,20 @@
|
|||
//
|
||||
// class MyClass {
|
||||
// private:
|
||||
// void MyMethod();
|
||||
// FRIEND_TEST(MyClassTest, MyMethod);
|
||||
// void PrivateMethod();
|
||||
// FRIEND_TEST(MyClassTest, PrivateMethodWorks);
|
||||
// };
|
||||
//
|
||||
// class MyClassTest : public testing::Test {
|
||||
// // ...
|
||||
// };
|
||||
//
|
||||
// TEST_F(MyClassTest, MyMethod) {
|
||||
// // Can call MyClass::MyMethod() here.
|
||||
// TEST_F(MyClassTest, PrivateMethodWorks) {
|
||||
// // Can call MyClass::PrivateMethod() here.
|
||||
// }
|
||||
//
|
||||
// Note: The test class must be in the same namespace as the class being tested.
|
||||
// For example, putting MyClassTest in an anonymous namespace will not work.
|
||||
|
||||
#define FRIEND_TEST(test_case_name, test_name)\
|
||||
friend class test_case_name##_##test_name##_Test
|
||||
|
|
|
@ -191,7 +191,7 @@ class GTEST_API_ FilePath {
|
|||
|
||||
void Normalize();
|
||||
|
||||
// Returns a pointer to the last ioccurrence of a valid path separator in
|
||||
// Returns a pointer to the last occurence of a valid path separator in
|
||||
// the FilePath. On Windows, for example, both '/' and '\' are valid path
|
||||
// separators. Returns NULL if no path separator was found.
|
||||
const char* FindLastPathSeparator() const;
|
||||
|
|
|
@ -803,31 +803,6 @@ struct RemoveConst<T[N]> {
|
|||
#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
|
||||
GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
|
||||
|
||||
// Adds reference to a type if it is not a reference type,
|
||||
// otherwise leaves it unchanged. This is the same as
|
||||
// tr1::add_reference, which is not widely available yet.
|
||||
template <typename T>
|
||||
struct AddReference { typedef T& type; }; // NOLINT
|
||||
template <typename T>
|
||||
struct AddReference<T&> { typedef T& type; }; // NOLINT
|
||||
|
||||
// A handy wrapper around AddReference that works when the argument T
|
||||
// depends on template parameters.
|
||||
#define GTEST_ADD_REFERENCE_(T) \
|
||||
typename ::testing::internal::AddReference<T>::type
|
||||
|
||||
// Adds a reference to const on top of T as necessary. For example,
|
||||
// it transforms
|
||||
//
|
||||
// char ==> const char&
|
||||
// const char ==> const char&
|
||||
// char& ==> const char&
|
||||
// const char& ==> const char&
|
||||
//
|
||||
// The argument T must depend on some template parameters.
|
||||
#define GTEST_REFERENCE_TO_CONST_(T) \
|
||||
GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))
|
||||
|
||||
// ImplicitlyConvertible<From, To>::value is a compile-time bool
|
||||
// constant that's true iff type From can be implicitly converted to
|
||||
// type To.
|
||||
|
|
|
@ -1366,6 +1366,39 @@ inline void FlushInfoLog() { fflush(NULL); }
|
|||
GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
|
||||
<< gtest_error
|
||||
|
||||
// Adds reference to a type if it is not a reference type,
|
||||
// otherwise leaves it unchanged. This is the same as
|
||||
// tr1::add_reference, which is not widely available yet.
|
||||
template <typename T>
|
||||
struct AddReference { typedef T& type; }; // NOLINT
|
||||
template <typename T>
|
||||
struct AddReference<T&> { typedef T& type; }; // NOLINT
|
||||
|
||||
// A handy wrapper around AddReference that works when the argument T
|
||||
// depends on template parameters.
|
||||
#define GTEST_ADD_REFERENCE_(T) \
|
||||
typename ::testing::internal::AddReference<T>::type
|
||||
|
||||
// Transforms "T" into "const T&" according to standard reference collapsing
|
||||
// rules (this is only needed as a backport for C++98 compilers that do not
|
||||
// support reference collapsing). Specifically, it transforms:
|
||||
//
|
||||
// char ==> const char&
|
||||
// const char ==> const char&
|
||||
// char& ==> char&
|
||||
// const char& ==> const char&
|
||||
//
|
||||
// Note that the non-const reference will not have "const" added. This is
|
||||
// standard, and necessary so that "T" can always bind to "const T&".
|
||||
template <typename T>
|
||||
struct ConstRef { typedef const T& type; };
|
||||
template <typename T>
|
||||
struct ConstRef<T&> { typedef T& type; };
|
||||
|
||||
// The argument T must depend on some template parameters.
|
||||
#define GTEST_REFERENCE_TO_CONST_(T) \
|
||||
typename ::testing::internal::ConstRef<T>::type
|
||||
|
||||
#if GTEST_HAS_STD_MOVE_
|
||||
using std::forward;
|
||||
using std::move;
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
# include <windows.h> // NOLINT
|
||||
#endif // GTEST_OS_WINDOWS
|
||||
|
||||
#include "gtest/gtest.h" // NOLINT
|
||||
#include "gtest/gtest.h"
|
||||
#include "gtest/gtest-spi.h"
|
||||
|
||||
namespace testing {
|
||||
|
@ -1024,7 +1024,7 @@ class TestResultAccessor {
|
|||
#if GTEST_CAN_STREAM_RESULTS_
|
||||
|
||||
// Streams test results to the given port on the given host machine.
|
||||
class GTEST_API_ StreamingListener : public EmptyTestEventListener {
|
||||
class StreamingListener : public EmptyTestEventListener {
|
||||
public:
|
||||
// Abstract base class for writing strings to a socket.
|
||||
class AbstractSocketWriter {
|
||||
|
|
|
@ -915,6 +915,7 @@ GTestLog::~GTestLog() {
|
|||
posix::Abort();
|
||||
}
|
||||
}
|
||||
|
||||
// Disable Microsoft deprecation warnings for POSIX functions called from
|
||||
// this class (creat, dup, dup2, and close)
|
||||
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
|
||||
|
@ -1007,8 +1008,7 @@ static CapturedStream* g_captured_stderr = NULL;
|
|||
static CapturedStream* g_captured_stdout = NULL;
|
||||
|
||||
// Starts capturing an output stream (stdout/stderr).
|
||||
static void CaptureStream(int fd,
|
||||
const char* stream_name,
|
||||
static void CaptureStream(int fd, const char* stream_name,
|
||||
CapturedStream** stream) {
|
||||
if (*stream != NULL) {
|
||||
GTEST_LOG_(FATAL) << "Only one " << stream_name
|
||||
|
@ -1049,6 +1049,10 @@ std::string GetCapturedStderr() {
|
|||
|
||||
#endif // GTEST_HAS_STREAM_REDIRECTION
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
size_t GetFileSize(FILE* file) {
|
||||
fseek(file, 0, SEEK_END);
|
||||
return static_cast<size_t>(ftell(file));
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
// Author: wan@google.com (Zhanyong Wan)
|
||||
|
||||
#include "gtest/gtest-typed-test.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
namespace testing {
|
||||
|
|
|
@ -2571,12 +2571,10 @@ void ReportInvalidTestCaseType(const char* test_case_name,
|
|||
<< "probably rename one of the classes to put the tests into different\n"
|
||||
<< "test cases.";
|
||||
|
||||
GTEST_LOG_(ERROR)
|
||||
<< FormatFileLocation(code_location.file.c_str(),
|
||||
code_location.line)
|
||||
<< " " << errors.GetString();
|
||||
GTEST_LOG_(ERROR) << FormatFileLocation(code_location.file.c_str(),
|
||||
code_location.line)
|
||||
<< " " << errors.GetString();
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
|
||||
namespace {
|
||||
|
@ -2898,7 +2896,7 @@ static int GetBitOffset(WORD color_mask) {
|
|||
if (color_mask == 0) return 0;
|
||||
|
||||
int bitOffset = 0;
|
||||
while((color_mask & 1) == 0) {
|
||||
while ((color_mask & 1) == 0) {
|
||||
color_mask >>= 1;
|
||||
++bitOffset;
|
||||
}
|
||||
|
@ -3106,7 +3104,6 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
|
|||
"Note: Randomizing tests' orders with a seed of %d .\n",
|
||||
unit_test.random_seed());
|
||||
}
|
||||
|
||||
ColoredPrintf(COLOR_GREEN, "[==========] ");
|
||||
printf("Running %s from %s.\n",
|
||||
FormatTestCount(unit_test.test_to_run_count()).c_str(),
|
||||
|
@ -3473,8 +3470,8 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
|
|||
// 3. To interpret the meaning of errno in a thread-safe way,
|
||||
// we need the strerror_r() function, which is not available on
|
||||
// Windows.
|
||||
GTEST_LOG_(FATAL) << "Unable to open file \""
|
||||
<< output_file_ << "\"";
|
||||
|
||||
GTEST_LOG_(FATAL) << "Unable to open file \"" << output_file_ << "\"";
|
||||
}
|
||||
std::stringstream stream;
|
||||
PrintXmlUnitTest(&stream, unit_test);
|
||||
|
@ -3773,6 +3770,7 @@ std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
|
|||
|
||||
// End XmlUnitTestResultPrinter
|
||||
|
||||
|
||||
#if GTEST_CAN_STREAM_RESULTS_
|
||||
|
||||
// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
|
||||
|
@ -4401,8 +4399,7 @@ void UnitTestImpl::ConfigureXmlOutput() {
|
|||
UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
|
||||
} else if (output_format != "") {
|
||||
GTEST_LOG_(WARNING) << "WARNING: unrecognized output format \""
|
||||
<< output_format
|
||||
<< "\" ignored.";
|
||||
<< output_format << "\" ignored.";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4417,8 +4414,7 @@ void UnitTestImpl::ConfigureStreamingOutput() {
|
|||
listeners()->Append(new StreamingListener(target.substr(0, pos),
|
||||
target.substr(pos+1)));
|
||||
} else {
|
||||
GTEST_LOG_(WARNING) << "unrecognized streaming target \""
|
||||
<< target
|
||||
GTEST_LOG_(WARNING) << "unrecognized streaming target \"" << target
|
||||
<< "\" ignored.";
|
||||
}
|
||||
}
|
||||
|
@ -5255,8 +5251,7 @@ static bool ParseGoogleTestFlag(const char* const arg) {
|
|||
static void LoadFlagsFromFile(const std::string& path) {
|
||||
FILE* flagfile = posix::FOpen(path.c_str(), "r");
|
||||
if (!flagfile) {
|
||||
GTEST_LOG_(FATAL) << "Unable to open file \""
|
||||
<< GTEST_FLAG(flagfile)
|
||||
GTEST_LOG_(FATAL) << "Unable to open file \"" << GTEST_FLAG(flagfile)
|
||||
<< "\"";
|
||||
}
|
||||
std::string contents(ReadEntireFile(flagfile));
|
||||
|
@ -5387,8 +5382,9 @@ void InitGoogleTest(int* argc, wchar_t** argv) {
|
|||
|
||||
std::string TempDir() {
|
||||
#if defined(GTEST_CUSTOM_TEMPDIR_FUNCTION_)
|
||||
return GTEST_CUSTOM_TEMPDIR_FUNCTION_();
|
||||
return GTEST_CUSTOM_TEMPDIR_FUNCTION_();
|
||||
#endif
|
||||
|
||||
#if GTEST_OS_WINDOWS_MOBILE
|
||||
return "\\temp\\";
|
||||
#elif GTEST_OS_WINDOWS
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "gtest/gtest.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "src/gtest-internal-inl.h"
|
||||
|
||||
using ::std::cout;
|
||||
|
|
|
@ -41,5 +41,5 @@ TEST(GTestMainTest, ShouldSucceed) {
|
|||
|
||||
} // namespace
|
||||
|
||||
// We are using the main() function defined in src/gtest_main.cc, so
|
||||
// we don't define it here.
|
||||
// We are using the main() function defined in gtest_main.cc, so we
|
||||
// don't define it here.
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
TEST(DummyTest, Dummy) {
|
||||
// This test doesn't verify anything. We just need it to create a
|
||||
// realistic stage for testing the behavior of Google Test when
|
||||
// RUN_ALL_TESTS() is called without
|
||||
// RUN_ALL_TESTS() is called without
|
||||
// testing::InitGoogleTest() being called first.
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user