90 Commits

Author SHA1 Message Date
Scott Slack-Smith
e7cd2ad6e7 *Silence false positive memory leaks reported by Microsoft's debug CRT*
Add a new RAII MemoryIsNotDeallocated class that excludes memory allocations from Microsoft’s debug CRT leak detection report.
We use this RAII class to silence 2 false positive leaks that are caused by memory allocations that are intentionally never deallocated.

*Background*
The MS debug CRT has a lightweight memory leak detection mechanism that can only detect if a memory allocation is missing a matching deallocation.
Consequently, it will report a false positive leak for memory that’s intentionally never deallocated. For example, memory that’s reachable for the entire lifetime of a app.
Note the MS debug CRT is always tracking memory allocations but the final memory leak report is disabled by default. As you can’t avoid paying for its cost, you may as well use it.

The memory leak report can be enabled by calling the following function
  #ifdef _MSC_VER
  _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
  #endif // _MSC_VER
anywhere before exiting main.

For example, the following are the false positive leaks reported before this change;

Detected memory leaks!
Dumping objects ->
{750} normal block at 0x015DF938, 8 bytes long.
Data: <  ]     > 00 F9 5D 01 00 00 00 00
{749} normal block at 0x015DEE60, 32 bytes long.
Data: <` ] ` ] ` ]     > 60 EE 5D 01 60 EE 5D 01 60 EE 5D 01 01 01 CD CD
{748} normal block at 0x015DF900, 12 bytes long.
Data: <8 ] ` ]     > 38 F9 5D 01 60 EE 5D 01 00 00 00 00
{747} normal block at 0x015DA0F8, 24 bytes long.
Data: <                > FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
Object dump complete.

As you can see from above it’s not easy to identify the above are false positives. Consequently, if false positive leaks are not fixed or silenced, then it becomes impractical to identify real memory leaks.
2017-06-30 17:12:56 +01:00
Billy Donahue
843fe11a0e Merge pull request #1081 from krytarowski/netbsd-1
Add NetBSD support
2017-06-23 19:35:25 -04:00
Chris-Sharpe
17c823fe70 Colouring in help text 2017-06-21 16:19:25 +01:00
Billy Donahue
b73cfb5887 Create gtest-internal.h 2017-06-11 18:34:04 -04:00
jorgehb
db948d695a Fixing float comparison broken link
Updating the link with a valid one. The old one was considered obsolete by the publisher.
2017-06-08 10:01:55 -04:00
Billy Donahue
5fd8b4782a Merge pull request #1091 from nico/wmicro
Fix -Wmicrosoft-cast warnings when using gtest with clang on Windows.
2017-05-23 11:10:42 -04:00
Gennadiy Civil
73a155fe54 Changes add ability to overwrite TempDir(), issue https://github.com/google/googletest/issues/1093 2017-05-18 10:19:28 -04:00
Billy Donahue
8afd5d19be Merge pull request #1089 from nico/stdstring
Use std::string and ::string explicitly in gtest and gmock code.
2017-05-16 17:00:03 -04:00
Billy Donahue
a1f6b6cdab Merge pull request #1090 from nico/typo
Fixing typo in documentation.
2017-05-15 23:54:23 -04:00
Nico Weber
9ea4f468e5 Gender-neutralize comments in gtest.h.
This merges a Google-internal change.
2017-05-15 18:00:29 -04:00
Nico Weber
3ec8d72fc1 Use std::string and ::string explicitly in gtest and gmock code.
This merges a Google-internal change (117235625).

Original CL description:
This CL was created manually in about an hour with sed, a Python script
to find all the places unqualified 'string' was mentioned, and some help
from Emacs to add the "std::" qualifications, plus a few manual tweaks.
2017-05-15 17:53:04 -04:00
Nico Weber
62d2a519ed Fix -Wmicrosoft-cast warnings when using gtest with clang on Windows.
This upstreams a Google-internal change.

Original CL description:
The C++ standard says that function pointers are not implicitly
convertible to object pointers. Visual Studio disregards that and allows
implicit conversion between function pointers and object points, and
enough code relies on this that clang follows suit in
Microsoft-compatibility mode.

However, clang emits a -Wmicrosoft-cast warning when such a conversion
is done:

E:\b\c\b\win_clang\src\sandbox\win\src\sync_dispatcher.cc(42,7):
    warning: implicit conversion between pointer-to-function and
             pointer-to-object is a Microsoft extension [-Wmicrosoft-cast]

This change fixes this warning in gtest, while hopefully not changing
any behavior. The change does two things:

1. It replaces the if in DefaultPrintTo with SFINAE
2. In C++11 mode, it uses enable_if<is_function<>> instead of
   ImplicitlyConvertible<T*, const void*> to check if the
   explicit cast is needed.

With this change, functions will use the branch with the reintpret_casts
with Visual Studio and clang/win, and clang no longer needs to warn
that it implicitly converts a function pointer to a void pointer.
2017-05-15 17:21:25 -04:00
Nico Weber
8fc77c3504 Fixing typo in documentation.
This upstreams a Google-internal change.
2017-05-15 17:12:19 -04:00
Billy Donahue
5f11a1cfd6 Merge pull request #725 from donhuff/xcode-headers
Add missing headers to Xcode framework target.
2017-05-15 11:44:37 -04:00
Billy Donahue
7927e99b3e Merge pull request #1078 from pwnall/gtest_api_port
Pick up GTEST_API_ definition in gtest/internal/custom/gtest-port.h.
2017-05-10 22:10:01 -04:00
Billy Donahue
8005a0be06 Merge pull request #965 from davidben/format-attr
Annotate ColoredPrintf with the format attribute and fix bugs.
2017-05-07 01:07:16 -04:00
Kamil Rytarowski
76042375b1 Add NetBSD support
NetBSD is a modern UNIX-like Operating System.

Enable GTEST_HAS_PTHREAD and GTEST_HAS_DEATH_TEST on NetBSD.
2017-05-06 04:18:58 +02:00
Victor Costan
ca56e42c44 Pick up GTEST_API_ definition in gtest/internal/custom/gtest-port.h.
This makes it possible for a port to define the specifier used for
exported symbols without having to change Google Test.
2017-05-04 10:19:47 -07:00
Billy Donahue
c374b339d5 Merge pull request #1034 from dankegel/master
Minimal changes to fix build failures on Microsoft Visual Studio 2015
2017-05-02 14:53:21 -04:00
Gennadiy Civil
a446e0fbe1 Changes to make TempDir() public
Fixes #1076.
2017-05-02 14:16:11 -04:00
Dan Kegel
1f92ec6cfd Minimal changes to fix build failures on Microsoft Visual Studio 2015
Fixes the following errors:

hash_map(17): error C2338: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning. [googlemock\gtest\gtest-printers_test.vcxproj]
hash_set(17): error C2338: <hash_set> is deprecated and will be REMOVED. Please use <unordered_set>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning. [googlemock\gtest\gtest-printers_test.vcxproj]
googletest\test\gtest_catch_exceptions_test_.cc(152): error C2220: warning treated as error - no 'object' file generated
googletest\test\gtest_catch_exceptions_test_.cc(152): warning C4297: 'CxxExceptionInDestructorTest::~CxxExceptionInDestructorTest': function assumed not to throw an exception but does
  googletest\test\gtest_catch_exceptions_test_.cc(152): note: destructor or deallocator has a (possibly implicit) non-throwing exception specification

There were already some checks for _MSC_VER in the code, so this commit
continues in that vein.
2017-03-01 18:40:48 -08:00
srz_zumix
beedbbea89 fix typo /GTEST_ATTRIBUTE_UNUSED/GTEST_ATTRIBUTE_UNUSED_/ 2017-02-03 08:05:22 +09:00
Mike Bjorge
8b6e202629 Add GTEST_ATTRIBUTE_UNUSED_ to REGISTER_TYPED_TEST_CASE_P
If REGISTER_TYPED_TEST_CASE_P is included in a header file, but
the .cc file does not declare INSTANTIATE_TYPED_TEST_CASE_P, an
unused-variable warning may be raised by the compiler.
2017-01-09 16:02:55 -08:00
David Benjamin
6d9c745ca4 Annotate ColoredPrintf with the format attribute and fix bugs.
googletest doesn't currently build with clang's very aggressive
-Wformat-nonliteral warning. It requires that all non-literal format
strings come from the argument of a function annotated with a compatible
format attribute.

Fixing that reports that ColoredPrintf's callers weren't passing the
normal -Wformat warning. Some messages were passed directly into the
format string rather than via "%s".
2016-12-21 20:57:21 -05:00
Billy Donahue
17a1f78f86 Merge pull request #658 from audiofanatic/ExternalProject_at_configure_time
Added docs for ExternalProject download during CMake step
2016-12-18 11:59:12 -05:00
Craig Scott
5fc61b8c25 2.6.4 is the minimum CMake version, so enforce it (#656) 2016-12-17 19:15:04 -05:00
Craig Scott
a0a7489cd4 Added CMake configure-time download instructions to docs
Adds instructions for how to add gtest and gmock to
another CMake project directly. Downloading of the
googletest sources happens as configure time, allowing
it to be added to the main build directly via the
add_subdirectory() command. This ensures googletest is
built with the same compiler settings, etc. and will
typically result in a more robust and more convenient
build arrangement.
2016-12-18 09:01:27 +11:00
Billy Donahue
824055a10e Merge pull request #918 from DanAlbert/fix-android-GTEST_HAS_CLONE
Fix detection of GTEST_HAS_CLONE for Android.
2016-11-03 16:36:28 -04:00
Billy Donahue
2def6d9054 Merge pull request #728 from DanAlbert/tuple-stlport
Fix a test to compile when tuple isn't available.
2016-11-02 13:54:19 -04:00
Dan Albert
cd955dc313 Fix detection of GTEST_HAS_CLONE for Android.
This was not in Gingerbread for anything but ARM (even though the
libs were hacked to lie about it being available in gingerbread).
2016-11-01 06:37:49 -07:00
Arkadiy Shapkin
76fad07f80 Fix build with MinGW-w64 2016-09-05 00:57:49 +03:00
Billy Donahue
58ec2e3ded Merge pull request #721 from ilmagico/fix-mingw-threads
Fix compilation of googletest with MinGW using Win32 threads
2016-08-24 08:15:38 -04:00
Arkadiy Shapkin
f8269a99a8 Support running MSVC build on AppVeyour 2016-06-27 11:40:27 +03:00
Billy Donahue
34b7cd3bf6 Rollback change #808. 2016-06-26 18:33:10 -04:00
David Mott
b45748d0ab Fix to tests that return object which implement operator bool 2016-06-25 16:21:09 -05:00
David Mott
a8a1a0e041 fix to operator precedence in GTEST_TEST_BOOLEAN_ with expressions that implement operator bool 2016-06-25 15:41:19 -05:00
Manuel Binna
71f7537bbc Fix whitespace in paragraph 2016-03-16 06:49:57 +01:00
Billy Donahue
f623d9b896 Merge pull request #724 from duggelz/master
Read Bazel's $XML_OUTPUT_FILE environment variable
2016-03-15 18:20:27 -04:00
Don Huff
6b36c162fb Update C++ language and library settings to match SDK projects. 2016-03-11 07:58:27 -06:00
Dan Albert
3cf0535158 Fix a test to compile when tuple isn't available. 2016-03-02 15:51:28 -08:00
Doug Greiman
92ca583f01 Restructure test so each scenario is independent. 2016-03-02 12:07:42 -08:00
Doug Greiman
31bdab0dad Fix env_var_test to ignore XML_OUTPUT_FILE if already set 2016-03-01 17:44:02 -08:00
Doug Greiman
9c99ed9211 Restructure $XML_OUTPUT_FILE logic 2016-02-26 14:26:23 -08:00
Doug Greiman
1862e3a14e Fix inconsistent style 2016-02-25 19:03:46 -08:00
Don Huff
f40c519708 Add missing headers to Xcode framework target. 2016-02-25 10:09:16 -06:00
Doug Greiman
3ac6a7bdd8 Read Bazel's $XML_OUTPUT_FILE environment variable
If $XML_OUTPUT_FILE is set, and $GTEST_OUTPUT and --gtest_output are not
specified, produce output as if GTEST_OUTPUT=xml:$XML_OUTPUT_FILE had
been set.
2016-02-23 18:50:08 -08:00
Daniele Tamino
aaa45ef055 Don't use pthread when on MinGW even if available
It's not supported, and native Windows threading is available for MinGW
2016-02-22 14:07:12 -08:00
Daniele Tamino
054ec981bc Fix compilation on MinGW with native threads 2016-02-22 14:07:12 -08:00
Paul Wilkinson
55a7cefa4f Fix formatting in AdvancedGuide.md
Put occurrences of "#include" in a code span so they are not interpreted
as headers.

Other documents were not broken because the #include was not at the
start of the line, but put them in code spans anyway just in case the
text gets refilled in the future.
2016-02-21 15:52:09 +00:00
Billy Donahue
967e5ac282 Merge pull request #713 from DarthGandalf/expect
Change error message of EXPECT_EQ to treat lhs and rhs equivalently.
2016-02-17 16:32:41 -05:00