diff options
Diffstat (limited to 'utils/unittest')
-rw-r--r-- | utils/unittest/Makefile | 2 | ||||
-rw-r--r-- | utils/unittest/UnitTestMain/Makefile | 21 | ||||
-rw-r--r-- | utils/unittest/UnitTestMain/TestMain.cpp | 15 | ||||
-rw-r--r-- | utils/unittest/googletest/Makefile | 6 | ||||
-rw-r--r-- | utils/unittest/googletest/README.LLVM | 5 | ||||
-rw-r--r-- | utils/unittest/googletest/include/gtest/internal/gtest-internal.h | 22 | ||||
-rw-r--r-- | utils/unittest/googletest/include/gtest/internal/gtest-port.h | 4 |
7 files changed, 69 insertions, 6 deletions
diff --git a/utils/unittest/Makefile b/utils/unittest/Makefile index 2f3e601b41b7..6a09341832bc 100644 --- a/utils/unittest/Makefile +++ b/utils/unittest/Makefile @@ -8,6 +8,6 @@ ##===----------------------------------------------------------------------===## LEVEL = ../.. -PARALLEL_DIRS = googletest +PARALLEL_DIRS = googletest UnitTestMain include $(LEVEL)/Makefile.common diff --git a/utils/unittest/UnitTestMain/Makefile b/utils/unittest/UnitTestMain/Makefile new file mode 100644 index 000000000000..aadff217aadc --- /dev/null +++ b/utils/unittest/UnitTestMain/Makefile @@ -0,0 +1,21 @@ +##===- utils/unittest/UnitTestMain/Makefile ----------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../../.. + +include $(LEVEL)/Makefile.config +NO_MISSING_FIELD_INITIALIZERS := $(shell $(CXX) -Wno-missing-field-initializers -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-missing-field-initializers) +NO_VARIADIC_MACROS := $(shell $(CXX) -Wno-variadic-macros -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-variadic-macros) + +LIBRARYNAME = UnitTestMain +BUILD_ARCHIVE = 1 +CPP.Flags += -I$(LLVM_SRC_ROOT)/utils/unittest/googletest/include +CPP.Flags += $(NO_MISSING_FIELD_INITIALIZERS) $(NO_VARIADIC_MACROS) + +include $(LEVEL)/Makefile.common diff --git a/utils/unittest/UnitTestMain/TestMain.cpp b/utils/unittest/UnitTestMain/TestMain.cpp new file mode 100644 index 000000000000..d97dca872ad7 --- /dev/null +++ b/utils/unittest/UnitTestMain/TestMain.cpp @@ -0,0 +1,15 @@ +//===--- utils/unittest/UnitTestMain/TestMain.cpp - unittest driver -------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "gtest/gtest.h" + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/utils/unittest/googletest/Makefile b/utils/unittest/googletest/Makefile index d709878449a6..29fe679a9b3e 100644 --- a/utils/unittest/googletest/Makefile +++ b/utils/unittest/googletest/Makefile @@ -8,17 +8,17 @@ ##===----------------------------------------------------------------------===## LEVEL := ../../.. + include $(LEVEL)/Makefile.config NO_MISSING_FIELD_INITIALIZERS := $(shell $(CXX) -Wno-missing-field-initializers -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-missing-field-initializers) NO_VARIADIC_MACROS := $(shell $(CXX) -Wno-variadic-macros -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-variadic-macros) - LIBRARYNAME = GoogleTest BUILD_ARCHIVE = 1 -CPP.Flags += -I$(LLVM_SRC_ROOT)/utils/unittest/googletest/include/ +CPP.Flags += -I$(LLVM_SRC_ROOT)/utils/unittest/googletest/include CPP.Flags += $(NO_MISSING_FIELD_INITIALIZERS) $(NO_VARIADIC_MACROS) -ifeq ($(OS),MingW) +ifeq ($(HOST_OS),MingW) CPP.Flags += -DGTEST_OS_WINDOWS=1 endif diff --git a/utils/unittest/googletest/README.LLVM b/utils/unittest/googletest/README.LLVM index 2c673cc6ab74..e907a5e6ea28 100644 --- a/utils/unittest/googletest/README.LLVM +++ b/utils/unittest/googletest/README.LLVM @@ -24,3 +24,8 @@ $ perl -pi -e 's|^#include "src/|#include "gtest/internal/|' *.cc $ rm -f gtest-all.cc gtest_main.cc $ mv COPYING LICENSE.TXT + + +Modified as follows: +* To GTestStreamToHelper in include/gtest/internal/gtest-internal.h, + added the ability to stream with raw_os_ostream. diff --git a/utils/unittest/googletest/include/gtest/internal/gtest-internal.h b/utils/unittest/googletest/include/gtest/internal/gtest-internal.h index 37faaaebea48..242ffea12f92 100644 --- a/utils/unittest/googletest/include/gtest/internal/gtest-internal.h +++ b/utils/unittest/googletest/include/gtest/internal/gtest-internal.h @@ -56,6 +56,8 @@ #include <gtest/internal/gtest-filepath.h> #include <gtest/internal/gtest-type-util.h> +#include "llvm/Support/raw_os_ostream.h" + // Due to C++ preprocessor weirdness, we need double indirection to // concatenate two tokens when one of them is __LINE__. Writing // @@ -92,9 +94,27 @@ // ::operator<<;" in the definition of Message's operator<<. That fix // doesn't require a helper function, but unfortunately doesn't // compile with MSVC. + +// LLVM INTERNAL CHANGE: To allow operator<< to work with both +// std::ostreams and LLVM's raw_ostreams, we define a special +// std::ostream with an implicit conversion to raw_ostream& and stream +// to that. This causes the compiler to prefer std::ostream overloads +// but still find raw_ostream& overloads. +namespace llvm { +class convertible_fwd_ostream : public std::ostream { + std::ostream& os_; + raw_os_ostream ros_; + +public: + convertible_fwd_ostream(std::ostream& os) + : std::ostream(os.rdbuf()), os_(os), ros_(*this) {} + operator raw_ostream&() { return ros_; } +}; +} template <typename T> inline void GTestStreamToHelper(std::ostream* os, const T& val) { - *os << val; + llvm::convertible_fwd_ostream cos(*os); + cos << val; } namespace testing { diff --git a/utils/unittest/googletest/include/gtest/internal/gtest-port.h b/utils/unittest/googletest/include/gtest/internal/gtest-port.h index 6a1593ef0178..3e49993bff4c 100644 --- a/utils/unittest/googletest/include/gtest/internal/gtest-port.h +++ b/utils/unittest/googletest/include/gtest/internal/gtest-port.h @@ -185,6 +185,8 @@ #define GTEST_OS_ZOS #elif defined(__sun) && defined(__SVR4) #define GTEST_OS_SOLARIS +#elif defined(__HAIKU__) +#define GTEST_OS_HAIKU #endif // _MSC_VER // Determines whether ::std::string and ::string are available. @@ -225,7 +227,7 @@ // TODO(wan@google.com): uses autoconf to detect whether ::std::wstring // is available. -#if defined(GTEST_OS_CYGWIN) || defined(GTEST_OS_SOLARIS) +#if defined(GTEST_OS_CYGWIN) || defined(GTEST_OS_SOLARIS) || defined(GTEST_OS_HAIKU) // At least some versions of cygwin don't support ::std::wstring. // Solaris' libc++ doesn't support it either. #define GTEST_HAS_STD_WSTRING 0 |