Commit Graph

976 Commits

Author SHA1 Message Date
Abseil Team
c13c27a513 Googletest export
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
2021-01-13 20:59:20 -05:00
Abseil Team
489283524e Googletest export
Move all docs into top-level docs/ directory

PiperOrigin-RevId: 350211277
2021-01-13 20:59:12 -05:00
Abseil Team
95a9bdd9f9 Googletest export
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
2021-01-13 20:58:49 -05:00
Derek Mauro
d72813110c Merge pull request #3189 from ellert:gtest-help-test-GNU/kFreeBSD
PiperOrigin-RevId: 349349288
2021-01-13 20:58:40 -05:00
Julien JEMINE
9614d8c1d6 Using auto instead of container::const_iterator 2020-12-29 16:46:55 +01:00
Derek Mauro
389cb68b87 Merge pull request #3094 from chuckatkins:update-deprecated-cmake-version
PiperOrigin-RevId: 349296827
2020-12-28 13:32:06 -05:00
Abseil Team
ca4b7c9ff4 Googletest export
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
2020-12-22 12:15:41 -05:00
dmauro
4f6fa70870 Googletest export
Internal Change

PiperOrigin-RevId: 347631521
2020-12-22 12:15:22 -05:00
Abseil Team
18f8200e30 Googletest export
Add static_asserts that verify that no class hierarchy contains more than one
of {NiceMock, NaggyMock, StrictMock}. This sort of nesting has always been
disallowed, but this CL adds a compile-time check to prevent it.

PiperOrigin-RevId: 347037822
2020-12-11 22:11:39 -05:00
dmauro
fb4b3b6b9a Googletest export
Fix a missing Bazel build dependency

PiperOrigin-RevId: 346783462
2020-12-10 17:56:26 -05:00
Abseil Team
e5644f5f12 Googletest export
Introduce a new `Address` matcher to gmock.

PiperOrigin-RevId: 346344591
2020-12-08 19:15:35 -05:00
Abseil Team
8779937dd0 Googletest export
Fix errata in gmock cook_book.md ON_CALL example

PiperOrigin-RevId: 346165890
2020-12-07 18:04:19 -05:00
Abseil Team
a02a591605 Googletest export
Add a `Pointer` matcher as an analog to `Pointee`.

Similar to `Pointee`, `Pointer` works with either raw or smart pointers and
allows creating a matcher like Pointer(Eq(foo)) for smart pointers.

PiperOrigin-RevId: 346164768
2020-12-07 18:04:12 -05:00
Abseil Team
93748a9466 Googletest export
Disable a gmock matcher test under MSVC 2015 (version 14) and earlier.  It interacts badly with Windows structured exceptions in a way we do not have the resources to investigate.  This test passes under MSVC 2017 and SEH.

PiperOrigin-RevId: 345496734
2020-12-03 15:42:58 -05:00
Abseil Team
1544828d27 Googletest export
Put "value" in SetArgReferee's description between code backticks.

PiperOrigin-RevId: 344054658
2020-12-02 18:23:14 -05:00
Abseil Team
9dce5e5d87 Googletest export
Use override instead of virtual for destructor

https://google.github.io/styleguide/cppguide.html says: "Explicitly annotate overrides of virtual functions or virtual destructors with exactly one of an override or (less frequently) final specifier. Do not use virtual when declaring an override". The mocked class _should_ have a virtual destructor most of the times.

PiperOrigin-RevId: 342082140
2020-11-13 10:57:24 -05:00
Abseil Team
a1adec799a Googletest export
Use a tagged constructor for FlatTuple instead.
Some versions of MSVC are getting confused with that constructor and generating invalid code.

PiperOrigin-RevId: 342050957
2020-11-12 13:32:33 -05:00
dmauro
336fd36fee Googletest export
Rollback change from
https://github.com/google/googletest/pull/1836. This change generates
a script on Windows to actually run each test, but the script itself
doesn't correctly report if the test passed.

This change will "break tests" that were already broken on Windows,
but weren't being reported as such.

PiperOrigin-RevId: 341850671
2020-11-12 13:32:03 -05:00
Abseil Team
fbef0711cf Googletest export
Change ACTION{,_Pn,_TEMPLATE} macros to build functors rather than ActionInterface<> subclasses, thus changing the Action<> wrappers they create to use the modernized (non-const) argument tuple type, allowing these macros to mutate their arguments.

Functor-based Action<>s deep-copy the implementing object, so have the functors use a shared_ptr to the non-trivial state of bound value parameters.  No longer specialize that shared state to the particular action signature, encoding that information instead only in the instantiation of the implementation function.

PiperOrigin-RevId: 341116208
2020-11-09 15:43:33 -05:00
Abseil Team
0c400f67fc Googletest export
GMock: Make Truly explain when it fails

I just wrote a test that had a matcher of the form
  Optional(AllOf(
    SomeMatcher,
    SomeOtherMatcher,
    Truly(SomePredicate)))

The predicate failed, the other two matchers succeeded, and I got a hard-to-interpret message saying that the value in the optional "didn't match". Didn't match what?

This change improves situations like that slightly by having Truly explain to its result listener when it fails. When there are multiple Trulys in an AllOf, there will be some ambiguity, but it will at least provide more information than right now.

PiperOrigin-RevId: 341105141
2020-11-09 15:43:24 -05:00
Abseil Team
d89b363021 Googletest export
Add support for ref qualifiers in MOCK_METHOD.

PiperOrigin-RevId: 341047839
2020-11-06 13:23:55 -05:00
ofats
710f9c11ca Googletest export
Rewrite InvokeArgument action without using pump.

PiperOrigin-RevId: 340861582
2020-11-05 15:07:26 -05:00
Andy Getz
fb98f7447e Merge pull request #3008 from hyukmyeong:update_tutorial
PiperOrigin-RevId: 340286884
2020-11-02 22:26:39 -05:00
Abseil Team
2828773179 Googletest export
Remove obsolete comment about non-const references.

They used to be banned by the C++ style guide, but positions shifted, and this comment is no longer up to date.

There's another reference (heh) on lines 816-819 to how gmock is a "general framework", with the possible implication that support for non-const references was weird in some way and only there to be "general", but I left it alone because I don't really feel I understand what it's saying.

PiperOrigin-RevId: 339323428
2020-10-30 14:10:41 -04:00
Chuck Atkins
32f4f52d95 Bump CMake minimum to 2.8.12 2020-10-30 11:31:54 -04:00
Abseil Team
252ee42d3b Googletest export
Fix some issues when running fuse_gmock_files.

The module path should be updated before importing `fuse_gtest_files`, since
the script may not run from the googletest repo root. We also need a non-frozen
set in order to track progress.

PiperOrigin-RevId: 337380466
2020-10-19 14:01:26 -04:00
dmauro
3c95bf5524 Googletest export
Fixes build warnings from previous CL
Add CMake to internal presubmit to prevent these

PiperOrigin-RevId: 337325504
2020-10-15 13:32:43 -04:00
Derek Mauro
ebbeee39f5 Merge pull request #3042 from Aralox:Issue-2135-modify-mock-template-args-AX-to-TArgX
PiperOrigin-RevId: 337217118
2020-10-15 13:32:33 -04:00
Abseil Team
a462188865 Googletest export
Add ::testing::FieldsAre matcher for objects that support get<> and structured bindings.
PiperOrigin-RevId: 337165285
2020-10-14 18:27:07 -04:00
Abseil Team
8ccc5ec5c0 Googletest export
Removing a semicolon that triggers a lint error in sample code.

PiperOrigin-RevId: 337095451
2020-10-14 18:26:41 -04:00
Derek Mauro
6abcfac2f2 Merge pull request #3050 from peternewman:patch-1
PiperOrigin-RevId: 336881266
2020-10-14 18:25:57 -04:00
Abseil Team
d4df326d6f Googletest export
Use absl::StrCat in MATCHER_P example for consistency with https://abseil.io/tips/3

PiperOrigin-RevId: 336878481
2020-10-14 18:25:49 -04:00
Abseil Team
d11c76175f Googletest export
Suggest using generic lambdas for composing macros.

Long chains of macros hurt legibility; generic lambdas are an easy way to abbreviate them, but are not an obvious solution to casual users.

Compare:
EXPECT_THAT(f(), ElementsAre(
    Property(&MyClass::foo, Property(&OtherClass::bar, Contains("x"))),
    Property(&MyClass::foo, Property(&OtherClass::bar, Contains("y"))));
to:
EXPECT_THAT(f(), ElementsAre(HasFooBar("x"), HasFooBar("y")));
PiperOrigin-RevId: 336870137
2020-10-14 18:25:40 -04:00
Abseil Team
72512aa893 Googletest export
Make the code Python3 compliant.

PiperOrigin-RevId: 336144198
2020-10-14 18:25:14 -04:00
Peter Newman
870a6b5563
Fix a typo 2020-10-12 06:23:18 +01:00
Aralox
ee66065bc5 Issue 2135: Change template args in NiceMock, NaggyMock and StrictMock from A1, A2, ... to TArg1, TArg2,... to avoid clash with legacy header files 2020-10-07 18:27:41 +11:00
Andy Getz
f278076efe Merge pull request #3027 from keshavgbpecdelhi:patch-2
PiperOrigin-RevId: 334384310
2020-09-29 20:47:44 -04:00
Abseil Team
705b9c1af2 Googletest export
Fix typo

PiperOrigin-RevId: 333745750
2020-09-28 23:48:26 -04:00
keshavgbpecdelhi
1f3484a2b7
Update cook_book.md
Please note that changing the default value for a type can make [you]* test.....
Here "you" word doesn't make sense.. rather "your" seems to make it understandable.
2020-09-27 15:27:14 +05:30
Abseil Team
df94fc5f7e Googletest export
Address OSS Issue #2463 https://github.com/google/googletest/issues/2463

PiperOrigin-RevId: 333289989
2020-09-24 12:06:34 -04:00
Abseil Team
7aca84427f Googletest export
Simplify FooConcrete static calls in googlemock cookbook.

PiperOrigin-RevId: 332437041
2020-09-20 18:48:41 -04:00
Abseil Team
bb2725346d Googletest export
Reduce the demangled name bloat of the Action constructor.

PiperOrigin-RevId: 332234887
2020-09-20 18:48:32 -04:00
Hyuk Myeong
242ee2720c Remove spaces between Google Test and Google Mock 2020-09-16 01:33:41 +09:00
Abseil Team
a4ab0abb93 Googletest export
Mark ACTION_Pn()-generated functions as must-use-result.

This catches when a client creates an action and discards it, thinking that the action has actually been applied to something.

This will help people who make the mistake of defining, for example, both `void Use(Foo*)` and `ACTION(Use) { Use(arg); }` for later application to a Foo.  With such an overload, a client may then write `Use();`, forgetting the param and being confused why nothing happens.

This also catches when a client defines their own action in terms of an ACTION()-generated one, invokes the ACTION's builder, and then fails to invoke the resulting action, thinking it's operating on the outer action's parameters.

PiperOrigin-RevId: 330614454
2020-09-10 19:09:30 -04:00
Derek Mauro
646603961b Merge pull request #2994 from xerus2000:gmock-docs
PiperOrigin-RevId: 330545489
2020-09-10 19:09:21 -04:00
Abseil Team
df6b75949b Googletest export
Replace uses of ACTION_TEMPLATE and ACTION_P with manually written functors.
The latter provide better error diagnostics.
This fixes https://github.com/google/googletest/issues/2729.

PiperOrigin-RevId: 328573022
2020-08-26 21:23:05 -04:00
xerus2000
296c9d29b1 Add timestamp to in old method mock macro guide 2020-08-25 10:07:30 +02:00
Abseil Team
ec9be15bf8 Googletest export
Workaround static assert in early versions libc++

The error is "Attempted to construct a reference element in a tuple with an
rvalue". We can fix this by putting everything into a non temporary tuple_args
and implitly convert to the other tuple types. This avoids binding an rvalue
reference to an lvalue reference inside the tuple.

PiperOrigin-RevId: 327624990
2020-08-23 23:51:21 -04:00
vslashg
aa4cbcdcbd Merge pull request #2904 from AmatanHead:throw-matchers
PiperOrigin-RevId: 327294137
2020-08-23 23:51:02 -04:00
Abseil Team
fc1e778899 Googletest export
Fix DoAll to work with move-only sink arguments.

This changes types of the first n - 1 actions so that they only get a readonly
view of the arguments. The last action will accept move only objects.

PiperOrigin-RevId: 327031893
2020-08-23 23:50:54 -04:00
Abseil Team
10ade8473b Googletest export
internal change

PiperOrigin-RevId: 326080000
2020-08-12 02:41:20 -04:00
Abseil Team
d0de618a58 Googletest export
Fixing exception-safety bug in googletest. Previously, if an exception was
thrown during a call to a mock that would have triggered an error, the error
was discarded.

Fixes #2890

PiperOrigin-RevId: 325017806
2020-08-07 13:08:09 -04:00
Abseil Team
5a5caab358 Googletest export
Fix DoAll to work with move-only sink arguments.

This changes types of the first n - 1 actions so that they only get a readonly
view of the arguments. The last action will accept move only objects.

PiperOrigin-RevId: 324619666
2020-08-07 13:08:00 -04:00
Abseil Team
48ec64092a Googletest export
Fix DoAll to work with move-only sink arguments.

This changes types of the first n - 1 actions so that they only get a readonly
view of the arguments. The last action will accept move only objects.

PiperOrigin-RevId: 324600664
2020-08-07 13:07:51 -04:00
Vladimir Goncharov
7f1c8bb447 Remove ThrowsMessageHasSubstr and fix some nits after review 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
a899cecb11 Cleanup a bulky expression, document implementation details 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
4ebbfea623 Fix build under msvc 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
c46bdea43a Update tests after changing an error message 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
0a80845e73 Fix build under msvc 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
92d0a6f7e2 Add a test to ensure that the Throws matcher only invokes its argument once. 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
69c510fb51 Add a test for duplicate catch clauses in throw matchers, fix a couple of nitpicks. 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
49d1201a7e Add missing documentation piece 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
46734d9a66 Small improvements: code style and property name 2020-08-03 23:47:57 +03:00
Vladimir Goncharov
9ac4cd0f49 Add matchers for testing exception properties
This PR adds matchers that accept a callable and verify that when invoked, it throws an exception with the given type and properties.

Fixes #952
2020-08-03 23:47:57 +03:00
Abseil Team
18a9aeda7a Googletest export
Internal documentation change.

PiperOrigin-RevId: 323612305
2020-07-28 14:22:08 -04:00
ofats
c64309924d Googletest export
Stop using ADL for InvokeArgument action.

PiperOrigin-RevId: 323234396
2020-07-28 14:21:59 -04:00
ofats
eb660507ff Googletest export
Move matchers' tests from *generated* to common files.

PiperOrigin-RevId: 320954068
2020-07-15 14:09:29 -04:00
vslashg
af287b4ffd Merge pull request #2903 from AmatanHead:informative-exception-asserts
PiperOrigin-RevId: 320425648
2020-07-15 14:09:20 -04:00
ofats
08b787796c Googletest export
Replace ByRef with std::ref everywhere in docs.

PiperOrigin-RevId: 320002303
2020-07-09 13:35:18 -04:00
Abseil Team
9aaaaf3f3d Googletest export
Cleanup: Error message grammar fix.
PiperOrigin-RevId: 319992912
2020-07-09 13:35:10 -04:00
Abseil Team
b9a8afcf2e Googletest export
Fix mismatch between `int` and `int32_t` in the parse function.
On some platforms, those are different types.

PiperOrigin-RevId: 319991862
2020-07-09 13:35:01 -04:00
Abseil Team
356f2d264a Googletest export
Improve compatibility with strict compilers targeting Windows

Remove an unnecessary ##, which could result in warnings about invalid preprocessor tokens when pasting to an initial '('

PiperOrigin-RevId: 319277617
2020-07-05 16:25:43 -04:00
Abseil Team
e5613588a1 Googletest export
Normalize headers in gMock docs

Increasing Header levels on two pages, to better match other pages in the same directory.

PiperOrigin-RevId: 318280892
2020-06-26 12:04:05 -04:00
Abseil Team
05c4a036bb Googletest export
Update auto_mock to support C++17 nested namespaces

PiperOrigin-RevId: 318192214
2020-06-26 12:03:55 -04:00
Abseil Team
549c5d061e Googletest export
gMock Cookbook: Fix incorrect comment about EXPECT priority order

It's actually the last matching expectation that's used, not the first.

PiperOrigin-RevId: 316490770
2020-06-15 16:56:42 -04:00
Abseil Team
13a433a94d Googletest export
Change string matchers, like HasSubstr, to accept `string_view` input if available.

PiperOrigin-RevId: 315726484
2020-06-10 17:37:39 -04:00
Abseil Team
210aab09de Googletest export
gMock Cookbook: Slight rewording

Remove "I" because documentation can have multiple authors. And remove unnecessary "guy".

PiperOrigin-RevId: 314533746
2020-06-05 03:56:49 -04:00
Gennadiy Rozental
cb44c86c1a Merge pull request #2755 from Conan-Kudo:set-version-for-libs
PiperOrigin-RevId: 314427570
2020-06-02 20:45:20 -04:00
Abseil Team
26dadc2241 Googletest export
Note that EXPECT_EQ(actual_value, expected_value) or EXPECT_THAT(actual_value, Eq(expected_value)) is preferred over EXPECT_THAT(actual_value, expected_value).

PiperOrigin-RevId: 314350852
2020-06-02 20:45:11 -04:00
dmauro
8f3854e204 Googletest export
Rollback of warning on unused ACTION result change

PiperOrigin-RevId: 313380971
2020-05-28 19:54:56 -04:00
Abseil Team
6b08b41e5f Googletest export
Spell out namespace for absl::Notification.

PiperOrigin-RevId: 312300192
2020-05-28 19:54:10 -04:00
durandal
a0669e070a Googletest export
Silence MSVC C4100 (unused formal parameter) to fix breakage from recently added testcase.  This warning is silenced in many files throughout googletest, but was not needed here until this testcase was added.

PiperOrigin-RevId: 312121200
2020-05-28 19:53:43 -04:00
Abseil Team
1397db9e58 Googletest export
Mark ACTION_Pn()-generated functions as must-use-result.

This catches when a client creates an action and discards it, thinking that the action has actually been applied to something.

This will help people who make the mistake of defining, for example, both `void Use(Foo*)` and `ACTION(Use) { Use(arg); }` for later application to a Foo.  With such an overload, a client may then write `Use();`, forgetting the param and being confused why nothing happens.

This also catches when a client defines their own action in terms of an ACTION()-generated one, invokes the ACTION's builder, and then fails to invoke the resulting action, thinking it's operating on the outer action's parameters.

PiperOrigin-RevId: 312108101
2020-05-28 19:53:34 -04:00
Abseil Team
63713e1ce4 Googletest export
Fix the ACTION* macros to allow for more than 10 arguments in the action.
Only the first 10 will be passed as individual arguments as `argN`, but the rest
can be accessed from the `args` tuple.

PiperOrigin-RevId: 311542098
2020-05-28 19:53:26 -04:00
Abseil Team
fe5300ebf1 Googletest export
Addresses https://github.com/google/googletest/pull/2784

PiperOrigin-RevId: 310902202
2020-05-13 00:39:40 -04:00
Abseil Team
a09ea700d3 Googletest export
Fix `-Wgnu-zero-variadic-macro-arguments` in GMock

Passing zero arguments to the variadic part of a macro is a GNU
extension and triggers warnings when build projects using GMock with
`-pedantic`.

 - Fix uses of `GMOCK_PP_INTERNAL_16TH` to always receive at least 17
arguments. (this was triggered when `GMOCK_PP_NARG` or `GMOCK_PP_HAS_COMMA`
were used with an argument containing no commas).
 - Fix `GMOCK_PP_HEAD` to append a dummy unused argument so that
`GMOCK_PP_INTERNAL_HEAD` always has two arguments.

PiperOrigin-RevId: 310414611
2020-05-07 16:15:58 -04:00
vslashg
1a9c3e4414 Merge pull request #2830 from keshavgbpecdelhi:patch-1
PiperOrigin-RevId: 309951872
2020-05-05 17:07:05 -04:00
Abseil Team
3cfb4117f7 Googletest export
Fix link to "high-perf dependency injection technique".

PiperOrigin-RevId: 308893893
2020-05-01 17:12:19 -04:00
Abseil Team
1293297874 Googletest export
internal change

PiperOrigin-RevId: 308648034
2020-05-01 17:11:52 -04:00
Gennadiy Rozental
ef25d27d46 Merge pull request #2815 from Quuxplusone:simple
PiperOrigin-RevId: 308625388
2020-05-01 17:11:43 -04:00
Abseil Team
955552518b Googletest export
Rewrite ReturnNew action without using pump.

PiperOrigin-RevId: 308219616
2020-05-01 17:11:34 -04:00
Abseil Team
fb5d9b66c5 Googletest export
Fix comment that describes how to test against nullopt.

PiperOrigin-RevId: 307448375
2020-05-01 17:11:00 -04:00
keshavgbpecdelhi
4bab55dc54
Removed a typo in README.md
There is an unnecessary comma before 'and'
2020-05-01 12:24:32 +05:30
Arthur O'Dwyer
11b3cec177 Fix a -Wdeprecated warning.
gmock-spec-builders.h:503:3: error:
    definition of implicit copy constructor for 'Expectation' is deprecated
    because it has a user-declared destructor [-Werror,-Wdeprecated]
        ~Expectation();
        ^
2020-04-23 22:22:34 -04:00
Arthur O'Dwyer
766ac2e1a4 Remove all uses of GTEST_DISALLOW_{MOVE_,}ASSIGN_.
None of these are strictly needed for correctness.
A large number of them (maybe all of them?) trigger `-Wdeprecated`
warnings on Clang trunk as soon as you try to use the implicitly
defaulted (but deprecated) copy constructor of a class that has
deleted its copy assignment operator.

By declaring a deleted copy assignment operator, the old code
also caused the move constructor and move assignment operator
to be non-declared. This means that the old code never got move
semantics -- "move-construction" would simply call the defaulted
(but deprecated) copy constructor instead. With the new code,
"move-construction" calls the defaulted move constructor, which
I believe is what we want to happen. So this is a runtime
performance optimization.

Unfortunately we can't yet physically remove the definitions
of these macros from gtest-port.h, because they are being used
by other code internally at Google (according to zhangxy988).
But no new uses should be added going forward.
2020-04-23 22:22:07 -04:00
Arthur O'Dwyer
4f002f1e23 VariadicMatcher needs a non-defaulted move constructor for compile-time performance.
We are about to remove all uses of GTEST_DISALLOW_ASSIGN_ in favor
of using the Rule of Zero everywhere.

Unfortunately, if we use the Rule of Zero here, then when the compiler
needs to figure out if VariadicMatcher is move-constructible, it will
recurse down into `tuple<Args...>`, which on libstdc++ recurses too deeply.

    In file included from googlemock/test/gmock-matchers_test.cc:43:
    In file included from googlemock/include/gmock/gmock-matchers.h:258:
    In file included from /usr/include/c++/5.5.0/algorithm:60:
    In file included from /usr/include/c++/5.5.0/utility:70:
    In file included from /usr/include/c++/5.5.0/bits/stl_pair.h:59:
    In file included from /usr/include/c++/5.5.0/bits/move.h:57:
    /usr/bin/include/c++/5.5.0/type_traits:115:26: fatal error:
          recursive template instantiation exceeded maximum depth of 256
        : public conditional<_B1::value, _B1, _B2>::type
                             ^

The move constructor is the only problematic case, for some unknown reason.
With GTEST_DISALLOW_ASSIGN_, the presence of a copy assignment operator
causes the move constructor to be non-declared, thus non-defaulted, thus
non-problematic. Without GTEST_DISALLOW_ASSIGN_, we have to do one of the
following:

- Default the copy constructor, so that the move constructor will be non-declared.

- Define our own non-defaulted move constructor.

...except that doing the latter STILL did not work!
Fortunately, the former (default the copy constructor, don't provide
any move constructor) both works in practice and is semantically
equivalent to the old code.
2020-04-16 19:12:52 -04:00
Abseil Team
373d72b698 Googletest export
Fix link to "After clause". Sorry, reader, but this heading is in another document!

PiperOrigin-RevId: 305947971
2020-04-16 13:32:42 -04:00
Mark Barolak
4fe5ac5333 Merge pull request #2756 from Conan-Kudo:fix-pkgconfig-reqs
PiperOrigin-RevId: 305747437
2020-04-16 13:32:33 -04:00
Abseil Team
61f010d703 Googletest export
Do not use std::result_of as it was removed in C++20.

PiperOrigin-RevId: 303783600
2020-03-31 19:23:38 -04:00
Xiaoyi Zhang
67cc66080d Merge pull request #2350 from adambadura:MockFunctionFromStdFunction
PiperOrigin-RevId: 302677275
2020-03-24 17:32:16 -04:00
Neal Gompa
3549237957 Ensure that gtest/gmock pkgconfig requirements specify version
Google Test and Google Mock require matching versions to work,
so this requirement should be described in the pkgconfig files.

This change is derived from the one used for the Fedora gtest package.

Signed-off-by: Neal Gompa <ngompa13@gmail.com>
2020-03-21 06:38:09 -04:00
Neal Gompa
94a7cf8c57 Set the version for the libraries
When building packaged shared libraries for use, having the version
set makes it so that the soname is set correctly for parallel installation.

This change is derived from the one used for the Fedora gtest package.

Signed-off-by: Neal Gompa <ngompa13@gmail.com>
2020-03-21 05:50:10 -04:00
Abseil Team
749148f1ac Googletest export
Internal change

PiperOrigin-RevId: 302048013
2020-03-20 20:15:32 -04:00
Adam Badura
53740ebc21 Add support for std::function in MockFunction (#2277) 2020-03-18 01:11:30 +01:00
Adam Badura
e41f31f2af Add tests for MockFunction deduction (#2277)
Add tests checking that ::testing::MockFunction template argument can
be deduced in a function call context. This is a property raised in the
review, however, not checked before by any tests.
2020-03-18 01:11:30 +01:00
dmauro
c43f7100f0 Googletest export
Use a polymorphic matcher instead of the GreaterThan<int> test matcher
to fix the sign-comparison warning on MSVC.

PiperOrigin-RevId: 301163657
2020-03-17 17:20:39 -04:00
Abseil Team
230afdb24e Googletest export
Internal change

PiperOrigin-RevId: 299345492
2020-03-17 17:20:23 -04:00
Abseil Team
cfb5ef4e7d Googletest export
Remove public buganizer reference from googletest cookbook.

It also seems that this bug is obsolete.

PiperOrigin-RevId: 298598298
2020-03-17 17:19:51 -04:00
Abseil Team
909b1ccfca Googletest export
Relax the implementation of MatcherCast to allow conversion of `Matcher<T>` to
`Matcher<const T&>`. They have the same match signature.

PiperOrigin-RevId: 297115843
2020-02-28 16:41:01 -05:00
Abseil Team
fd538161f4 Googletest export
Allow construction of an Action from a callable of zero args

Action already allows construction from a callable with the same args as the mocked function, without needing to wrap the callable in Invoke. However, if you don't care about the arguments to the mocked function you need to either accept all of them or wrap your callable in InvokeWithoutArgs. This change makes both of those unnecessary, since it allows you to pass a no-args callable to Action directly.

PiperOrigin-RevId: 296117034
2020-02-28 16:40:53 -05:00
Abseil Team
6f5fd0d719 Googletest export
Add gmock Matcher<std::string_view> specialization.

PiperOrigin-RevId: 294443240
2020-02-11 15:50:26 -05:00
Abseil Team
d0930731d6 Googletest export
Fix gmock_gen to use MOCK_METHOD instead of old style macros.  Fix several
related bugs in argument parsing and return types.
- handle commas more correctly in return types
- handle commas correctly in arguments
- handle default values more correctly

PiperOrigin-RevId: 294435093
2020-02-11 15:50:18 -05:00
Abseil Team
56de7cc8b5 Googletest export
Fix gmock_gen to use MOCK_METHOD instead of old style macros.

PiperOrigin-RevId: 294360947
2020-02-11 15:50:10 -05:00
Abseil Team
360f5f70a3 Googletest export
Fix gmock_gen to use MOCK_METHOD instead of old style macros.

PiperOrigin-RevId: 294332975
2020-02-11 15:50:01 -05:00
Abseil Team
41b5f149ab Googletest export
Get rid of gmock-generated-matchers.h and gmock-generated-matchers.h.pump.

Stop using pump for MATCHER* macroses generation.

PiperOrigin-RevId: 293878808
2020-02-07 18:20:45 -05:00
durandal
2d6d7a01c9 Googletest export
Tag the function generated by MATCHER with GTEST_ATTRIBUTE_UNUSED_ to fix CI builds of gmock-matchers_test.cc vs. -Wunused-function.

See https://github.com/google/googletest/pull/2697 for breakage.

PiperOrigin-RevId: 293669752
2020-02-07 13:35:36 -05:00
Abseil Team
fbf67a70d0 Googletest export
Get rid of gmock-generated-function-mockers.h and
gmock-generated-function-mockers.h.pump.

Stop using pump for GMOCK_METHOD* macroses generation.

PiperOrigin-RevId: 293454519
2020-02-07 13:35:27 -05:00
Abseil Team
11d9834e98 Googletest export
...text exposed to GitHub repo https://www.github.com/google/googletest

PiperOrigin-RevId: 293438092
2020-02-07 13:35:19 -05:00
Abseil Team
d02e277275 Googletest export
Pass method's parameters count to internal GMOCK_METHOD* macro.

This will help removing copypaste in every GMOCK_METHOD* macro in future.

PiperOrigin-RevId: 292932554
2020-02-07 13:35:10 -05:00
Abseil Team
4f6609129a Googletest export
Fix std::move to std::forward where appropriate to support reference types.

PiperOrigin-RevId: 292923058
2020-02-07 13:35:00 -05:00
Abseil Team
572e261b60 Googletest export
Fix use of reserved names.
Minimize code duplication needed for explict-vs-nonexplicit constructor.

PiperOrigin-RevId: 292555014
2020-02-07 13:34:42 -05:00
Abseil Team
38f6608e87 Googletest export
Add includes for type_traits and utility to gmock-function-mocker.h: macros in the file require these headers.

PiperOrigin-RevId: 291782497
2020-02-07 13:34:26 -05:00
Abseil Team
d6ce39edf6 Googletest export
Create implementation macroses for matchers to move variadic parameters to the
end of parameters list.

To save backward compatibility, old macroses will be still taking `description`
parameter as the last one. But they will use INTERNAL macro that takes
`description` as the second parameter.

PiperOrigin-RevId: 291724469
2020-02-07 13:34:18 -05:00
Abseil Team
87061810f4 Googletest export
Move part of functionality of Matcher* class to the base one. Reduce copypaste.

Make constructor and conversion operator of Matcher* class independent of pump.

PiperOrigin-RevId: 291405510
2020-02-07 13:34:03 -05:00
Abseil Team
22397f28ef Googletest export
Add missing explicit keyword for gmock_Impl constructor.

When switching to using GMOCK_PP in ACTION* macroses `explicit` keyword was
missed in gmock_Impl constructor causing ClangTidy warnings in ACTION_P macro.

PiperOrigin-RevId: 291159975
2020-02-07 13:33:47 -05:00
Abseil Team
d01e356e15 Googletest export
Allow copying of the string in MatchAndExplain.

Otherwise, conversions from std::string_view to std::string will fail as being
explicit

PiperOrigin-RevId: 290301103
2020-01-21 16:26:33 -05:00
Xiaoyi Zhang
9417fb401a Merge pull request #2665 from bysreg:fix_noshortcircuitfailure_detectsflakyshortcircuit_test
PiperOrigin-RevId: 290256504
2020-01-21 16:26:24 -05:00
Abseil Team
5336106b66 Googletest export
Use GMOCK_PP to create GMOCK_INTERNAL_ACTION macro.

Create GMOCK_INTERNAL_ACTION macro that generates ACTION_P* macroses using
GMOCK_PP.

PiperOrigin-RevId: 289815906
2020-01-16 13:56:12 -05:00
Abseil Team
7a8591e6e4 Googletest export
Use GMOCK_PP to generate args boilerplate.

Move common args describing part to separate macroses that uses GMOCK_PP to
generate sequences.

PiperOrigin-RevId: 289655624
2020-01-16 13:55:54 -05:00
Muhammad Hilman Beyri
c7137f0b84 Use IsReadableTypeName IsReadableTypeName in OfType function in gmock-matchers_test.cc 2020-01-12 21:29:54 -05:00
Muhammad Hilman Beyri
3aa538cbfc fix unit test failure on NoShortCircuitOnFailure and DetectsFlakyShortCircuit when GTEST_HAS_RTTI is 1 2020-01-12 16:53:09 -05:00
Abseil Team
c901f67ddf Googletest export
Move part of functionality of Action* class to the base one. Reduce copypaste.

Make constructor and conversion operator of Action* class independent of pump.

PiperOrigin-RevId: 288907005
2020-01-09 18:25:24 -05:00
Abseil Team
4b9c1691c4 Googletest export
Use C++11 variadic templates for Invoke in gmock-generated-actions.h.

Replace InvokeArgumentAdl with Invoke that uses C++11 variadic templates.

PiperOrigin-RevId: 288449236
2020-01-09 18:25:08 -05:00
Abseil Team
306f3754a7 Googletest export
Explicitly default copy constructor in BoundSecondMatcher

Since C++11, implicit defaulting of copy constructors is deprecated for types
with user-defined copy assignment operators, so we should explicitly default the
copy constructor of BoundSecondMatcher.

PiperOrigin-RevId: 287587847
2020-01-02 16:49:38 -05:00
Abseil Team
153909f096 Googletest export
Fix typo in example.

PiperOrigin-RevId: 287212448
2020-01-02 16:49:14 -05:00
Abseil Team
d0a521255e Googletest export
Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h.

Make InvokeArgumentAdl use variadic templates to generate its overloads instead
of using pump.py syntax.

PiperOrigin-RevId: 286267615
2020-01-02 16:48:42 -05:00
Abseil Team
6f1a8ffde9 Googletest export
Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h.

Make InvokeArgumentAdl use variadic templates to generate its overloads instead
of using pump.py syntax.

PiperOrigin-RevId: 286148805
2020-01-02 16:48:34 -05:00
krzysio
0a0c826629 Googletest export
Don't use fully qualified ::std types in code examples.

Having a nested user-defined 'std' namespace anywhere in a program is a minefield and shouldn't be either explicitly supported or implicitly condoned.

PiperOrigin-RevId: 285790182
2019-12-16 16:03:51 -05:00
Abseil Team
d8eeb9760a Googletest export
Use C++11 variadic templates for ActionHelper in gmock-generated-actions.h.

Make ActionHelper use variadic templates to generate Perform static member function specializations instead of using pump.py syntax.

PiperOrigin-RevId: 284988441
2019-12-13 12:57:53 -05:00
Matt Calabrese
88ba008c23 Merge pull request #2595 from kuzkry:remove-workaround_msvc-warning-4355
PiperOrigin-RevId: 284234675
2019-12-13 12:57:35 -05:00
Matt Calabrese
a3097c826e Merge pull request #2592 from kuzkry:remove-workaround_msvc-error-C2665
PiperOrigin-RevId: 284207090
2019-12-13 12:57:26 -05:00
Mark Barolak
78fdd6c00b Merge pull request #2609 from kuzkry:revert-2596
PiperOrigin-RevId: 284041013
2019-12-06 11:34:42 -05:00
Mark Barolak
1d563578c8 Merge pull request #2594 from kuzkry:remove-workaround_msvc-unneeded-const-dropping
PiperOrigin-RevId: 283979494
2019-12-05 14:41:50 -05:00
Abseil Team
ae8d1fc81b Googletest export
Clarify use of IsTrue and IsFalse matchers.

These matchers are subtle and confusing: what are they for?
The docs in the code are clear, but not very accessible.
googletest/googlemock/include/gmock/gmock-more-matchers.h

PiperOrigin-RevId: 283393275
2019-12-02 16:42:01 -05:00
Mark Barolak
52825d78aa Merge pull request #2603 from maximilianschwab:patch-1
PiperOrigin-RevId: 283349646
2019-12-02 16:41:53 -05:00
Gennadiy Rozental
b155875f32 Merge pull request #2583 from ChristophStrehle:master
PiperOrigin-RevId: 282817206
2019-11-27 16:20:38 -05:00
Krystian Kuzniarek
3957b8898b Revert "remove MSVC workaround: wmain link error in the static library"
This reverts commit 298a40f023.
2019-11-27 15:01:03 +01:00
Krystian Kuzniarek
967d8e05c2 Revert "unify googletest and googlemock main functions"
This reverts commit a909becdc5.
2019-11-27 15:00:52 +01:00
Gennadiy Rozental
39803f3c51 Merge pull request #2593 from kuzkry:remove-workaround_msvc-namespace-scope-from-nested-class
PiperOrigin-RevId: 282593823
2019-11-26 15:47:38 -05:00
Gennadiy Rozental
0361bdf591 Merge pull request #2596 from kuzkry:remove-workaround_msvc-wmain-link-error
PiperOrigin-RevId: 282589492
2019-11-26 15:47:30 -05:00
Gennadiy Rozental
db13ff1f0b Merge pull request #2597 from kuzkry:remove-workaround_Nokia-Sybian-SafeMatcherCastImpl
PiperOrigin-RevId: 282581402
2019-11-26 15:47:21 -05:00
Maximilian Schwab
838a32845c
Fixed typo 2019-11-25 08:11:28 +01:00
Abseil Team
717ce7feb8 Googletest export
Use standard C++11 integer types in gtest-port.h.

Remove testing::internal::{Int,Uint}{32,64} in favor of types
guaranteed to be in <cstdint> since C++11.

Tests for built-in integer type coverage are switched from
{Int,Uint}64 to [unsigned] long long, which is guaranteed by
C++11 to exist and be at least 64-bit wide.

PiperOrigin-RevId: 281565263
2019-11-22 16:33:15 -05:00
Krystian Kuzniarek
a909becdc5 unify googletest and googlemock main functions 2019-11-22 17:45:04 +01:00
Krystian Kuzniarek
298a40f023 remove MSVC workaround: wmain link error in the static library 2019-11-22 17:45:04 +01:00
Krystian Kuzniarek
bbbc5d8a4b remove Nokia's Symbian compiler workaround: SafeMatcherCastImpl 2019-11-22 17:25:34 +01:00
Krystian Kuzniarek
e0c80b0a6e consistency fix for SafeMatcherCastImpl member functions 2019-11-22 17:25:34 +01:00
Krystian Kuzniarek
6748df1eab remove MSVC workaround: cease const dropping 2019-11-22 17:17:41 +01:00
Krystian Kuzniarek
ecefcbd4aa remove MSVC workaround: warning 4355 2019-11-22 17:15:23 +01:00
Krystian Kuzniarek
a5136dbdd2 remove MSVC workaround: error C2665 2019-11-22 17:12:11 +01:00
Krystian Kuzniarek
21d276b5c4 remove MSVC workaround: accessing namespace scope from within nested classes 2019-11-22 17:10:39 +01:00
Christoph Strehle
6a9d6d5c28 Fix compile break for Microsoft Visual Studio 2017 v141
This is a workaround, for those who have to compile with v141 build tools,
for a bug in msvc that the compiler can't compile the WithArgsAction.

see the following link for more details:
https://developercommunityapi.westus.cloudapp.azure.com/content/problem/420339/googlemocks-withargs-doesnt-compile-with-permissiv.html
2019-11-21 14:58:09 +01:00
Abseil Team
4bf466236d Googletest export
Add a breadcrumb about nullopt comparison near the Optional() matcher.

Also add a note about how otherwise-spurious 'Eq()' may be needed in some cases. Without this, something like Field(&MyStruct::optional_field_without_equals_equals, absl::nullopt) doesn't work - it converts the nullopt to an optional<> of the non-equalable type, and fails to select the operator==(optional<>, nullopt_t) overload. The Eq() lets the type persist later into the match.

PiperOrigin-RevId: 281305519
2019-11-20 14:16:45 -05:00
Abseil Team
50cfbb726b Googletest export
Update stale comments to point to proper location.

PiperOrigin-RevId: 281157036
2019-11-19 11:25:59 -05:00
Andy Getz
11440f27c6 Merge pull request #2556 from ienorand:avoid-pkg-config-lpthread-cflag
PiperOrigin-RevId: 279375858
2019-11-13 17:03:46 -05:00
Xiaoyi Zhang
e08a460277 Merge pull request #2549 from kuzkry:pump-support-for-python-3
PiperOrigin-RevId: 278702666
2019-11-05 17:08:36 -05:00
Xiaoyi Zhang
8aedd597af Merge pull request #2548 from kuzkry:update-pump-manual
PiperOrigin-RevId: 278702531
2019-11-05 17:08:27 -05:00
Martin Erik Werner
6caa879a42 pkg-config: Remove pthread link flag from Cflags
Remove the threads link library variable references from the pkg-config
Cflags: field, removing -lpthread(s) from the compile flags.

"-l*" linker flags should only be part of the Libs: section and should
not be part of the Cflags: section in pkg-config files.

This was first suggested in
https://github.com/google/googletest/pull/2006 and further discussed in
https://github.com/google/googletest/pull/2483 .
2019-11-05 22:40:49 +01:00
Krystian Kuzniarek
f658561ef2 fix a typo 2019-11-02 01:18:21 +01:00
Krystian Kuzniarek
442f45b376 pump.py: add support for Python 3 2019-11-02 01:13:24 +01:00
Krystian Kuzniarek
523ad489ef update pump_manual.md 2019-11-02 01:08:24 +01:00
vslashg
057ee5063d Merge pull request #2533 from thejcannon:noexcept_spec
PiperOrigin-RevId: 277924721
2019-11-01 16:02:05 -04:00
Abseil Team
2db3df9c4f Googletest export
Change variable name to match comment.

PiperOrigin-RevId: 277713621
2019-10-31 15:11:41 -04:00
Abseil Team
e2fc3a9c9c Googletest export
Tolerate std::string's explicit copy construction from std::string_view.

PiperOrigin-RevId: 277583394
2019-10-31 15:11:31 -04:00
misterg
0a03480824 Googletest export
Remove outdated unsupported scripts

PiperOrigin-RevId: 277556831
2019-10-30 16:49:09 -04:00
misterg
ba33a8876c Googletest export
Internal Change

PiperOrigin-RevId: 277336786
2019-10-29 16:51:58 -04:00
mhermas
fff8dabbf6 Googletest export
Merge 65032e28cba171c000accc85ffaf6f1e62921b86 into 8c91ecef29

Closes #2470

COPYBARA_INTEGRATE_REVIEW=https://github.com/google/googletest/pull/2470 from hermas55:bugfix/default_const_param 65032e28cba171c000accc85ffaf6f1e62921b86
PiperOrigin-RevId: 277118535
2019-10-29 16:51:49 -04:00
Abseil Team
755f853c6b Googletest export
Avoid temporary matcher instances.
They are unnecessary and can be relatively more expensive than the rest of the
algorithm.

PiperOrigin-RevId: 277084853
2019-10-29 16:51:31 -04:00
vslashg
b5fb5ba05c Merge pull request #2527 from PiotrNycz:gmock_prevent_return_ref_to_store_temporaries_2
PiperOrigin-RevId: 277061341
2019-10-29 16:51:12 -04:00
Abseil Team
a1f71dd56d Googletest export
Remove badly formatted suggestion in gmock cheat sheet.

PiperOrigin-RevId: 277060475
2019-10-29 16:51:01 -04:00
vslashg
a8b1a66cfd Merge pull request #2388 from kuzkry:remove-gtest-type-util.pump
PiperOrigin-RevId: 276944601
2019-10-29 16:50:52 -04:00
Krystian Kuzniarek
002905f29f move the pumping script to googlemock 2019-10-25 17:03:39 +02:00
vslashg
540835fa68 Merge pull request #2515 from ciband:feat/support_esp8266
PiperOrigin-RevId: 276333426
2019-10-25 10:21:03 -04:00
Piotr Nycz
208c2f6b60 variable names corrected (followed google coding style)
Issue 2527
2019-10-25 16:14:18 +02:00
Piotr Nycz
5ff72f5295 Apply 80chars limit
Issue 2527
2019-10-25 10:29:15 +02:00
Piotr Nycz
d072682119 Tests simplified and names corrected (POD->scalar)
Issue 2527
2019-10-24 10:22:09 +02:00
Abseil Team
37f3227831 Googletest export
Add a matcher `testing::ReturnRoundRobin` which, on each call, returns the next element in the sequence, restarting at the beginning once it has reached the end.

PiperOrigin-RevId: 276312136
2019-10-23 15:54:45 -04:00
Joshua Cannon
676d0444bf Revert "Merge pull request #2498 from thejcannon:noexcept_spec"
This reverts commit ba513d2c95, reversing
changes made to a3ca5b9e0b.
2019-10-23 14:46:46 -05:00
vslashg
8bab7883a6 Merge pull request #2514 from thejcannon:msvc_macro_issue
PiperOrigin-RevId: 276134684
2019-10-23 13:35:26 -04:00
Piotr Nycz
37590da6c0 Added more tests to verify: ReturnRef not accept temporary
Issue 2471
2019-10-23 10:12:48 +02:00
Piotr Nycz
19a3bbce51 Added tests verifying that temporaries are accepted by ReturnRef
Issue no 2527
2019-10-22 18:41:35 +02:00
Piotr Nycz
b11fb80e9e Prevent using ReturnRef on reference to temporary
Fixed issue: 2471
2019-10-22 15:58:00 +02:00
Gennadiy Civil
de11283554 Merge pull request #2444 from kuzkry:remove-GTEST_ARRAY_SIZE_
PiperOrigin-RevId: 275842505
2019-10-22 09:38:21 -04:00
Abseil Team
611a321a6e Googletest export
Remove bool_constant in favor of std::integral_constant<bool, ...>;
The one non-trivial use of bool_constant has been changed to have significantly
fewer template specializations.

PiperOrigin-RevId: 275842490
2019-10-22 09:38:12 -04:00
Abseil Team
011c4e23d5 Googletest export
Rolling forward IsNan() matcher with fixes in test for -Wconversion issues. Use
std::nanf and std::nanl where appropriate.
PiperOrigin-RevId: 275523003
2019-10-22 09:37:46 -04:00
misterg
f966ed1581 Googletest export
Added IsNan matcher

PiperOrigin-RevId: 275473218
2019-10-18 11:34:08 -04:00
Abseil Team
1f9edcd969 Googletest export
Addressing https://github.com/google/googletest/issues/2502

Add MOCK_METHOD support for returning function pointers.

PiperOrigin-RevId: 275323671
2019-10-18 11:33:59 -04:00
Abseil Team
bbe4b7363b Googletest export
Added IsNan matcher

PiperOrigin-RevId: 275278634
2019-10-17 13:08:00 -04:00
Gennadiy Civil
2995ca563d Merge pull request #2507 from roblub:master
PiperOrigin-RevId: 275076905
2019-10-17 13:07:51 -04:00
Andy Soffer
bdc29d5dc1 Merge pull request #2421 from kuzkry:cleanup-for-regex
PiperOrigin-RevId: 275058934
2019-10-16 14:32:31 -04:00