70 Commits

Author SHA1 Message Date
Tom Hughes
783d00fd19 Use '=default' to define trivial constructor/destructors
https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-equals-default.html

PiperOrigin-RevId: 526079054
Change-Id: Ia4db21e3e5f58b90de05d52fd94b291ed06d785d
2023-04-21 10:41:25 -07:00
Abseil Team
8fa9461cc2 Fix FunctionMocker compilation slowdown in 9d21db9e0a60a1ea61ec19331c9bc0dd33e907b1
The slowdown appears to be due to an implicit conversion of distinct (yet semantically identical) lambdas to `std::function`. Lifting out the lambdas into functors that don't get re-instantiated reduces compilation times by nearly half.

Fixes #4156

PiperOrigin-RevId: 523447948
Change-Id: Ib0ae0761a54d7b1f2b706b14b2858eedf47e2297
2023-04-11 10:55:11 -07:00
Tom Hughes
e5e46b09a1 IWYU: Add missing std includes
PiperOrigin-RevId: 499893032
Change-Id: I33304802b7c82ae2d008f3ee89df38866e5f57ba
2023-01-05 08:44:01 -08:00
Abseil Team
6b63c98ac4 Remove incorrect GTEST_ATTRIBUTE_UNUSED_ from InSequence class.
Fixes: #4048
PiperOrigin-RevId: 486951561
Change-Id: I4fae101b5ac5ed4f46c32aba8c36519e1f784db1
2022-11-08 07:58:14 -08:00
Copybara-Service
3026483ae5 Merge pull request #4041 from zloylos:allow-naming-expectations
PiperOrigin-RevId: 483683590
Change-Id: Id22de3a22018324e5c1e21e262ac5e027a83bf3e
2022-10-25 08:39:19 -07:00
Denis Hananein
09e1c64f86 Fix format without expectation name
Signed-off-by: Denis Hananein <i@zloylos.me>
2022-10-21 15:37:38 +02:00
Denis Hananein
0d26378919 Change messages
Signed-off-by: Denis Hananein <i@zloylos.me>
2022-10-21 14:03:45 +02:00
Denis Hananein
f3eb2b7e38 Allow naming expectations #3970
Signed-off-by: Denis Hananein <i@zloylos.me>
2022-10-20 23:13:06 +02:00
Derek Mauro
0320f517fd Work around a maybe-uninitialized warning under GCC 12
Some Mock constructors insert the pointer to the Mock itself into a
global registry. Since GCC cannot see how the pointer is used (only as
an identifier), it cannot tell that the object doesn't need to be
initialized at that point at all. Work around this by using uintptr_t
instead.

PiperOrigin-RevId: 452380347
Change-Id: Ia5a493057ed90719de1d0efab71de9a8a08ddf8b
2022-06-01 14:08:04 -07:00
Aaron Jacobs
e649993a40 gmock-spec-builders: remove the name for an unused parameter.
This fixes unused parameter errors under both MSVC and clang (when
`-Werror=unused-parameter` is used, as reported
[here](9d21db9e0a (r74769946))).

Fixes #3858

PiperOrigin-RevId: 451907906
Change-Id: Ic07da19ea6a547eb1797fbbab19cd57cc2a83fe8
2022-05-30 12:46:59 -07:00
Aaron Jacobs
9d21db9e0a gmock-spec-builders: add support for non-moveable types.
Do this by ripping out the "untyped perform action" machinery, which isn't
necessary: we can simply template the entry point on the result type, and use
RAII to avoid the need to special case void. This makes it easier to understand
the code and harder to introduce type-related undefined behavior, to boot.
PiperOrigin-RevId: 451493451
Change-Id: I225305f83164752ca92f2916721972eafba33168
2022-05-27 15:25:37 -07:00
Aaron Jacobs
56246cdb94 gmock-spec-builders: move a method to the header.
In order to make the diff more readable in an upcoming commit that requires the
method to be templated on the action's result type.

PiperOrigin-RevId: 451157029
Change-Id: I57beb7544efccd0459efb3a1f039ea45cd7c7602
2022-05-26 07:25:17 -07:00
Aaron Jacobs
0498660ea5 Support move-only and &&-qualified actions in DoAll.
This is necessary for generic support of these actions, since `DoAll` is a
frequently-used action wrapper.

PiperOrigin-RevId: 444561964
Change-Id: I02edb55e35ab4207fbd71e371255a319c8253136
2022-04-26 08:05:34 -07:00
Derek Mauro
bf66935e07 Remove the legacy internal GTEST_DISALLOW_* macros
PiperOrigin-RevId: 443715444
Change-Id: I3ffd54b63d2728ae4a668ee7875c8c3c8188087c
2022-04-22 11:26:03 -07:00
Abseil Team
a1cc8c5519 Add support for move-only and &&-qualified actions in WillOnce.
This provides a type-safe way for an action to express that it wants to be
called only once, or to capture move-only objects. It is a generalization of
the type system-evading hack in ByMove, with the improvement that it works for
_any_ action (including user-defined ones), and correctly expresses that the
action can only be used with WillOnce. I'll make existing actions benefit in a
future commit.

PiperOrigin-RevId: 440496139
Change-Id: I4145d191cca5655995ef41360bb126c123cb41d3
2022-04-08 18:40:07 -07:00
Abseil Team
b007c54f29 Running clang-format over all of GoogleTest
A few tests are examining code locations and looking af the resulting line
numbers to verify that GoogleTest shows those to users correctly. Some of those
locations change when clang-format is run. For those locations, I've wrapped
portions in:
// clang-format off
...
// clang-format on

There may be other locations that are currently not tickled by running
clang-format.

PiperOrigin-RevId: 434844712
Change-Id: I3a9f0a6f39eff741c576b6de389bef9b1d11139d
2022-03-15 13:42:11 -07:00
Abseil Team
100f6fbf5f Consistently apply IWYU pragmas across googletest and googlemock headers
PiperOrigin-RevId: 422559250
Change-Id: I9f630f2186724950e5e9fbd7093d5264e8bf0a71
2022-01-18 08:11:11 -08:00
Christian Clauss
ee1be03b43 Fix remaining typos discovered by codespell 2021-09-24 08:09:32 +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
662fe38e44 Googletest export
Support templating MockFunction over function objects besides std::function.

PiperOrigin-RevId: 373586967
2021-05-13 15:08:57 -04:00
Abseil Team
98ca420679 Googletest export
Internal change

PiperOrigin-RevId: 362040448
2021-03-16 09:50:49 -04: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
d4144d4ee2 Googletest export
Revert include guard fix

PiperOrigin-RevId: 356588893
2021-02-11 12:49:24 -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
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
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
Xiaoyi Zhang
67cc66080d Merge pull request #2350 from adambadura:MockFunctionFromStdFunction
PiperOrigin-RevId: 302677275
2020-03-24 17:32:16 -04:00
Adam Badura
53740ebc21 Add support for std::function in MockFunction (#2277) 2020-03-18 01:11:30 +01:00
Krystian Kuzniarek
ecefcbd4aa remove MSVC workaround: warning 4355 2019-11-22 17:15:23 +01:00
Shaindel Schwartz
c7a03daa99 Merge pull request #2387 from kuzkry:iff
PiperOrigin-RevId: 268693457
2019-09-12 12:10:51 -04:00
kuzkry
ab8f346b07 Googletest export
Merge 7f4f58da20e1066a888d3e4bcbef541db798a605 into 90a443f9c2437ca8a682a1ac625eba64e1d74a8a

Closes #2395

COPYBARA_INTEGRATE_REVIEW=https://github.com/google/googletest/pull/2395 from kuzkry:custom-type-traits-remove_reference 7f4f58da20e1066a888d3e4bcbef541db798a605
PiperOrigin-RevId: 266189044
2019-09-06 08:00:03 -04:00
Krystian Kuzniarek
7bd4a7f3e9 restore mistakenly removed iffs in their explicit form
Due to confusion arisen from "iff" standing for "if and only if",
this commit uses the latter.
2019-08-20 12:14:22 +02:00
Krystian Kuzniarek
ec49fbca4c remove custom implementations of std::is_same 2019-08-14 14:00:44 +02:00
Krystian Kuzniarek
637b0411fa remove an excessive mutable type specifier
MockFunction's private member cannot be reached from outside and all its
non-static member functions are not const.
2019-08-01 11:33:36 +02:00
Krystian Kuzniarek
bf6df7eaee fix typos 2019-07-30 12:52:27 +02:00
Adam Badura
1f809607b5 Add missing <functional> include
gmock-spec-builders.h uses std::function (in MockFunction) but did
not include <functional> to provide it. Apparently, it worked since
the header must have been included by something else but better be
safe than sorry.
2019-07-16 23:15:51 +02:00
Abseil Team
569fba4d74 Googletest export
Make internal FunctionMocker class final

PiperOrigin-RevId: 230332778
2019-01-22 13:12:13 -05:00
Abseil Team
9518a57428 Googletest export
Fix mocking method arguments with templated copy constructors.

A previous change removed workarounds for old compilers from googletest and googlemock. Unfortunately, a bit of code that started as a workaround for Symbian's C++ compiler is still needed to avoid copy/move constructor ambiguity when mocking functions with certain argument types.

The test case added by this CL is extracted from Chrome's codebase, and was discovered while attempting to roll googletest.

PiperOrigin-RevId: 229801765
2019-01-18 14:06:03 -05:00
misterg
14c2fba734 Googletest export
Internal Change

PiperOrigin-RevId: 227575279
2019-01-02 16:51:40 -05:00
Abseil Team
f8b1c1af17 Googletest export
Remove the #ifs for old, unsupported and buggy compilers:
* old versions of GCC & MSVC
* Symbian

PiperOrigin-RevId: 227116941
2019-01-02 16:51:33 -05:00
Abseil Team
26743363be Googletest export
Applied fixes for ClangTidy modernize-use-override and modernize-use-using.

PiperOrigin-RevId: 223800219
2018-12-03 12:54:11 -05:00
Abseil Team
de5be0eb28 Googletest export
Move FunctionMocker and MockFunction out of the pump file and implement with variadic templates.

PiperOrigin-RevId: 220640265
2018-11-08 14:49:12 -05:00
misterg
e857f9cdd9 Googletest export
Remove scoped_ptr replace with std::unique_ptr

PiperOrigin-RevId: 219291284
2018-10-30 21:20:43 -04:00
Gennadiy Civil
e9085769d4 Merge pull request #1941 from barkovv:master
PiperOrigin-RevId: 219134349
2018-10-29 13:46:24 -04:00
misterg
80b43d900b Googletest export
Remove linked_ptr and use std::shared_ptr instead

PiperOrigin-RevId: 219129336
2018-10-29 13:46:16 -04:00
Vadim Barkov
3feffddd1e Replaced all NULLs with nullptr in googlemock 2018-10-28 03:27:51 +03:00
Abseil Team
b57c703963 Googletest export
Remove linked_ptr and use std::shared_ptr instead

PiperOrigin-RevId: 218618184
2018-10-26 14:19:59 -04:00
misterg
a50e4f05b3 Googletest export
Remove linked_ptr and use std::shared_ptr instead

PiperOrigin-RevId: 218571466
2018-10-26 14:19:51 -04:00