If a function that takes no arguments explicitly states (void)
then do not include it in the mocked method argument list
since it triggers static assertions that expect no arguments
to be present.
Fixes (?) #3261
Disable Travis CI. The migration to travis-ci.com is incompatible with
security policy. These tests are now run on Kokoro.
PiperOrigin-RevId: 355438343
Use linear-time string globbing in UnitTestOptions::MatchesFilter.
Algorithm is based on https://research.swtch.com/glob.
Closes#3227
PiperOrigin-RevId: 355222440
Updates the gMock cheat sheet to include the versions of the Field and Property matchers which take an additional name parameter.
PiperOrigin-RevId: 353273968
Remove obsolete argument limit documentation.
Combine uses variadic templates now, so there is no inherent limit on the number of arguments.
PiperOrigin-RevId: 352580160
Print unique_ptr/shared_ptr recursively.
Given that they are smart pointers, it is unlikely that the inner object is
invalid.
PiperOrigin-RevId: 351586888
Launder buffer before reference
In GCC, directly casting the Buffer reference to another type results in
strict-aliasing violation errors. This launders the reference using an
intermediate pointer prior to creating the new reference.
PiperOrigin-RevId: 350809323
Change Matcher<T> to allow binding an implementation by value directly:
- Drop the requirement of MatcherInterface. Doing manual type erasure avoid
extra layers in many cases.
- Avoid the adaptor for `MatcherInterface<T>` and `MatcherInterface<const T&>` mismatch.
- Use a small object optimization when possible. This makes things like
`_` and `Eq(1)` really cheap and do not require memory allocations.
- Migrate some matchers to the new model to speed them up and to test the new framework. More matchers to come in future changes.
PiperOrigin-RevId: 350580998
Use an OrderedDict to store templated_types in the AST so that gmock knows how to properly construct the templated Mock class.
This is necessary for functions that make use of the templated typename as an argument or return type.
PiperOrigin-RevId: 349405731
This fixes build issues with GoogleTest when built with
-Wformat-nonliteral and unblocks updating GoogleTest in BoringSSL.
It was added in 53c478d639, which caught
some bugs. Then it was moved to the header and accidentally dropped in
482ac6ee63.
Affects macros {ASSERT|EXPECT}_{EQ|NE|LE|LT|GE|GT}.
According to removed comments, these overloads were supposed to reduce
code bloat and allow anonymous enums on GCC 4.
However, the way it works on GCC 4 and the latest GCC (10.2 by now) is
that having:
template <typename T1, typename T2>
void foo(T1, T2);
using BiggestInt = long long;
void foo(BiggestInt, BiggestInt);
the template version takes precedence for almost every combination of
integral types except for two long long integers - i.e. implicit
promotion to long long is a worse match than generating a specific
template function.
Tested on GCC 4.8.1 (as GoogleTest requires C++11 and this was
the first C++11 feature-complete release of GCC),
GCC 4.8.5 (last of 4.8.x series) and the latest GCC (10.2.0).
Give each of Naggy/Nice/StrictMock a base class whose constructor runs before
the mocked class's constructor, and a destructor that runs after the mocked
class's destructor, so that any mock methods run in either the constructor or
destructor use the same strictness as other calls.
PiperOrigin-RevId: 348511612