1039 Commits

Author SHA1 Message Date
Brian
58b71c9ea2 Remove another GTEST_DISALLOW_ASSIGN_ that crept in
They were all removed in #2815, but it looks like this one got added
from a Google export which missed the update. See #2815 for reasons why
removing this is desirable.
2022-01-05 21:33:05 -08:00
Abseil Team
6b74da4757 Include the param names in the generated description of the MATCHER_P matchers.
PiperOrigin-RevId: 418497526
Change-Id: Ie53c3c0810c10a32cbcb941e3ca1ee8fb1ddd9f9
2021-12-27 08:05:24 -08:00
Derek Mauro
c58f562fa2 Makes the Python imports consistently use full paths from the repository root,
unifying the behavior between Bazel and CMake

This fixes one of the CI failures on Windows

PiperOrigin-RevId: 417872531
Change-Id: I156989323b7e6d4a4420f4f9691b078829db933d
2021-12-22 13:01:24 -08:00
Abseil Team
d61d4d8e64 Support std::reference_wapper as a smart pointer type in gmock
PiperOrigin-RevId: 413963503
Change-Id: I33440780bf087698f4e4325399227405885430b3
2021-12-03 10:14:13 -08:00
Krystian Kuzniarek
dfc3675361 fix a typo 2021-11-16 09:18:03 +01:00
Taylor Cramer
1a3e2a265f Clarify "Times() after X" error message
The previous error message could be misinterpreted to mean that `Times` could not be
used in combination with `WillRepeatedly`, when in fact the call to `Times` just needs to happen *first*.

PiperOrigin-RevId: 410070405
Change-Id: I747d34a4334cf2e56d589dcad3a08a8f322d77c8
2021-11-15 13:48:12 -08:00
Abseil Team
1b18723e87 Fix typo in gmock-matchers_test.cc: CanDescribeNegationOfExpectingOneElment => CanDescribeNegationOfExpectingOneElement
PiperOrigin-RevId: 409484263
Change-Id: I7448d6f04a9868602e0bc8dec40ea3eb63d3e387
2021-11-12 13:09:59 -08:00
Raul Tambre
5d1e4af673 Replace use of deprecated std::iterator
This was deprecated by P0174 in C++17.
2021-11-05 13:01:19 +02:00
Abseil Team
b3062166a1 Googletest export
Internal change

PiperOrigin-RevId: 405710296
2021-11-03 13:45:46 -04:00
Deniz Bahadir
64f19a9fc3 CMake: Fix values of INTERFACE_INCLUDE_DIRECTORIES property
Replace semicolon by `$<SEMICOLON>` in generator-expressions of target
property `INTERFACE_INCLUDE_DIRECTORIES` of CMake targets `gtest`,
`gtest_main`, `gmock` and `gmock_main`.

Fixes: #3616

Signed-off-by: Deniz Bahadir <deniz@code.bahadir.email>
2021-10-19 15:14:44 +02:00
dinord
075810f7a2 Merge pull request #3581 from cclauss:codespell
PiperOrigin-RevId: 400792845
2021-10-05 10:59:42 -04:00
Abseil Team
ab36804e42 Googletest export
Ensure `.what()` is printed in `ThrowsMessage(...)` to address https://github.com/google/googletest/issues/3582

Closes #3582

PiperOrigin-RevId: 399462851
2021-09-28 16:33:40 -04:00
Christian Clauss
ee1be03b43 Fix remaining typos discovered by codespell 2021-09-24 08:09:32 +02:00
dinord
e4717df71a Merge pull request #3195 from Inujel:fix-3194
PiperOrigin-RevId: 398271948
2021-09-23 23:31:42 +00:00
dinord
319a9d19bc Merge pull request #3574 from Vertexwahn:switch_to_native_cc_rules
PiperOrigin-RevId: 397995447
2021-09-23 23:31:25 +00:00
Abseil Team
de34ef4e4c Internal change
PiperOrigin-RevId: 397651677
2021-09-23 23:31:03 +00:00
Vertexwahn
277e0a0168 Remove bazelbuild/rules_cc dependency 2021-09-17 10:04:26 +02:00
dmauro
8aa657ee39 Googletest export
Delete unsupported/deprecated scripts

PiperOrigin-RevId: 396847020
2021-09-15 13:34:06 -04:00
Abseil Team
314adcd40e Googletest export
gmock-internal-utils.cc: Use `static_cast` instead of implicit conversion between signed and unsigned types
Fixes #3550

PiperOrigin-RevId: 396826071
2021-09-15 13:34:00 -04:00
dmauro
4ea61b9669 Googletest export
Rollback delete of unsupported/deprecated scripts

PiperOrigin-RevId: 396699187
2021-09-15 13:33:54 -04:00
dmauro
7ee2683007 Googletest export
Delete unsupported/deprecated scripts

PiperOrigin-RevId: 396685976
2021-09-15 13:33:48 -04:00
Abseil Team
6202251f09 Googletest export
Introduce GMOCK_FLAG_GET and GMOCK_FLAG_SET macros.

PiperOrigin-RevId: 396649214
2021-09-15 13:33:42 -04:00
Abseil Team
6204633979 Googletest export
Bump `cmake_minimum_required` to 3.5.

Delete conditional branches exclusive to older versions.

Notable dependents:
  - github.com/grpc/grpc >= 3.5.1
  - github.com/abseil/abseil-cpp >= 3.5
  - github.com/googleapis/google-cloud-cpp >= 3.5

On the other hand, github.com/protocolbuffers/protobuf is >= 3.1.3, but it only depends on GoogleTest 1.10.

Fixes #3523

PiperOrigin-RevId: 392073834
2021-08-24 12:28:58 -04:00
Derek Mauro
0134d73a49 Merge pull request #3504 from duianto:patch-1
PiperOrigin-RevId: 390486428
2021-08-13 12:42:35 -04:00
Abseil Team
21514e0be7 Googletest export
Identify bad specs of the type (const something, ...).

PiperOrigin-RevId: 390346843
2021-08-13 12:42:17 -04:00
Abseil Team
aefb45469e Internal change
PiperOrigin-RevId: 389163232
2021-08-06 15:28:29 -04:00
Abseil Team
652ec31f9f Googletest export
Introduce a new matcher for unescaping Base-64 strings to gmock.

PiperOrigin-RevId: 388471904
2021-08-04 13:54:39 -04:00
duianto
97ff0fec11
Typo, double "the" 2021-07-29 20:32:48 +02:00
slowy07
2f3e2e39cc fix: typo codespelling comment 2021-07-24 17:38:47 +07:00
Abseil Team
96f4ce02a3 Googletest export
Delete GOOGLETEST_CM.* tags from C++ code.

PiperOrigin-RevId: 386268534
2021-07-22 14:54:03 -04:00
Abseil Team
43cf52911a Googletest export
Suppress a clang-tidy warning in the MATCHER(name, description) macro.

PiperOrigin-RevId: 383587271
2021-07-09 09:28:04 -04:00
Abseil Team
8306020a3e Googletest export
Add `Conditional` wrapper to gtest

This follows an initial proposal for an 'EqIff` matcher. `Conditional` was considered more precise as an EqIff() matcher may suffer from `Iff` not being universally understood.

PiperOrigin-RevId: 383407665
2021-07-07 14:34:28 -04:00
Abseil Team
977cffc442 Googletest export
Introduce GTEST_FLAG_GET and GTEST_FLAG_SET macros.

PiperOrigin-RevId: 382808313
2021-07-07 14:34:19 -04:00
Abseil Team
4ec4cd23f4 Googletest export
Implement 'Contains(e).Times(n)' matcher modifier which allows to test for arbitrary occurrences including absence with Times(0).

PiperOrigin-RevId: 382210276
2021-06-30 13:33:57 -04:00
Manuel Binna
4281d2149c Don't link pthread on QNX
On QNX, pthread is part of libc [1]. There's no separate pthread library
to link.

[1] https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.lib_ref/topic/p/pthread_create.html
2021-06-26 13:26:20 +02:00
CJ Johnson
7153098229 Merge pull request #3429 from 1KoT1:master
PiperOrigin-RevId: 379625931
2021-06-17 12:52:27 -04:00
Vasilii Pochkaenko
5ef9f63a72 feat: make a matcher ElementsAreArray applicable for std ranges 2021-06-15 16:42:40 +07:00
dmauro
8ceecc27c7 Googletest export
Updates Linux docker image to use Bazel 4.1.0 and GCC 11.1
Updates Bazel dependencies
Removes the last usage of the deprecated and removed Python2

PiperOrigin-RevId: 375759184
2021-06-02 17:54:36 -04:00
Abseil Team
662fe38e44 Googletest export
Support templating MockFunction over function objects besides std::function.

PiperOrigin-RevId: 373586967
2021-05-13 15:08:57 -04:00
John Bampton
050b517518 chore: fix spelling 2021-04-15 11:53:53 +10:00
Abseil Team
c3fc92f0b7 Googletest export
Update docs to point to the github.io pages.

PiperOrigin-RevId: 367711335
2021-04-12 20:14:19 -07:00
Austin Sullivan
9c047902ac
Update nicestrictnaggy gmock cook_book links
An incorrect link is output to the user when these conditions are met.
2021-03-17 10:33:19 -04:00
Abseil Team
98ca420679 Googletest export
Internal change

PiperOrigin-RevId: 362040448
2021-03-16 09:50:49 -04:00
Abseil Team
861d535e25 Googletest export
Update READMEs and issue template

PiperOrigin-RevId: 361931644
2021-03-10 08:49:32 -08:00
Abseil Team
bf465ff05d Internal change
PiperOrigin-RevId: 361213113
2021-03-09 10:59:19 -08:00
Abseil Team
e7e591764b Googletest export
Format WORKSPACE and googlemock/test/BUILD.bazel using buildifier

PiperOrigin-RevId: 360913861
2021-03-04 12:07:39 -05:00
Abseil Team
5893778716 Googletest export
Update stale links to `gmock_cook_book.md`.

I'm a new googletest user and found these links broken when reading the documentation.

PiperOrigin-RevId: 357786392
2021-02-18 13:27:00 -05:00
Abseil Team
0a3a3a845e Googletest export
Make include guards conform with https://google.github.io/styleguide/cppguide.html#The__define_Guard, attempt #2

PiperOrigin-RevId: 357056902
2021-02-18 13:26:24 -05:00
Abseil Team
eac6a02cc2 Googletest export
Mark move constructor noexcept

PiperOrigin-RevId: 356772642
2021-02-11 12:49:46 -05:00
Abseil Team
d4144d4ee2 Googletest export
Revert include guard fix

PiperOrigin-RevId: 356588893
2021-02-11 12:49:24 -05:00
Andy Soffer
e165773418 Merge pull request #3262 from platisd:master
PiperOrigin-RevId: 356568444
2021-02-11 12:49:08 -05:00
Abseil Team
9c2293af06 Googletest export
Fix build for MinGW + clang

In [1], empty_bases "is only supported when using the Microsoft C++ ABI." Disable it for MinGW.

https://clang.llvm.org/docs/AttributeReference.html#empty-bases

PiperOrigin-RevId: 356373782
2021-02-11 12:48:52 -05:00
Abseil Team
36b7792047 Googletest export
Make include guards conform with https://google.github.io/styleguide/cppguide.html#The__define_Guard

PiperOrigin-RevId: 355882793
2021-02-11 12:48:43 -05:00
platisd
46b188577b Do not include void into mocked method arguments
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
2021-02-05 21:30:10 +01:00
Abseil Team
f4e7727cf4 Googletest export
Fix includes in fuse_gmock_files.py

PiperOrigin-RevId: 355166403
2021-02-05 10:40:23 -08:00
Abseil Team
d114398800 Googletest export
Remove uses of GTEST_HAS_TYPED_TEST_P and GTEST_HAS_TYPED_TEST.

PiperOrigin-RevId: 353935996
2021-02-05 10:39:30 -08:00
ofats
59dea67b81 Googletest export
Remove scripts for code generating together with related files.

PiperOrigin-RevId: 352805926
2021-01-26 15:43:04 -05:00
Abseil Team
997c36c188 Googletest export
Stop using pump for generating internal/custom/gmock-generated-actions.h

PiperOrigin-RevId: 352660735
2021-01-26 15:42:55 -05:00
Abseil Team
2c06d021d6 Googletest export
Internal change

PiperOrigin-RevId: 352607401
2021-01-26 15:42:30 -05:00
Abseil Team
14098f2015 Googletest export
Merge CONTRIBUTORS, delete LICENSEs in googletest/ and googlemock/

PiperOrigin-RevId: 352558822
2021-01-26 15:42:13 -05:00
Abseil Team
d128fc8252 Googletest export
Fixes #3222, fixes #3225, closes #3223

PiperOrigin-RevId: 352066131
2021-01-15 15:54:03 -05:00
Abseil Team
41ecb10253 Googletest export
Internal change

PiperOrigin-RevId: 352002166
2021-01-15 15:53:47 -05:00
Abseil Team
a2f906be69 Googletest export
Add "using is_gtest_matcher = void" to the DivisibleBy7Matcher example.

PiperOrigin-RevId: 351797821
2021-01-15 15:53:22 -05:00
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