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
Avoid instantiating functions like std::get<index> for an out of range index
when doing SFINAE on the invocability of the action itself.
PiperOrigin-RevId: 439415110
Change-Id: Ifc20285a6d526c34830870cd1910c2b2b92e1e81
When built with `--define=absl=1` under Bazel, GoogleTest
flags use ABSL_FLAG instead of GoogleTest's own implementation.
There are some minor behavior differences in this mode.
The most notable difference is that unrecognized flags result
in a flag parsing error, and are not returned to the user though
a modified argc/argv, unless they appear after the positional
argument delimiter ("--").
For example, to pass a non-Abseil flag, you would have to do
./mytest --gtest_color=false -- --myflag=myvalue
The documentation at https://abseil.io/docs/cpp/guides/flags
may be helpful in understanding the behavior.
There are some other minor differences. For example,
passing --help results in the program returning 1 instead of 0.
https://github.com/google/googletest/issues/3646
PiperOrigin-RevId: 439312700
Change-Id: Id696a25f50f24a5b1785c45ca8fa59794f86fd5c
The one large test does not link in limited memory environments
Closes#3653
PiperOrigin-RevId: 436753193
Change-Id: Idd59b6509994fc642147b88279ee791cd1d7bdd0
Currently, the "[ DISABLED ]" banner is printed for every test in a suite.
When iterating on a single test gtest_filter this is very noisy.
PiperOrigin-RevId: 436489088
Change-Id: If337087a7a0986b073fabf2b0a55d26485eb5c37
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
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*, Bar)` and `ACTION_P(Use, bar) { Use(arg, bar); }` for later application to a Foo. With such an overload, a client may then write `Use(bar);`, selecting the Action<> overload and being confused why nothing happens.
This also catches when a client defines their own action in terms of an ACTION_P()-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: 433197479
Change-Id: I98e4389150d01a5e753230113016d9fc38b1d260
So that global test environments are by default set up and torn down once,
regardless of the value of the repeat flag.
The point of global environments is to be set up and torn down once, and shared
by all tests in the process. There is no obvious reason why multiple runs of the
same test should be treated distinctly from single runs of different tests.
Having this be false by default means that repeats using a global environment
run faster. It can still be set to true if it's desired that every repeat get a
fresh environment, but this seems less important given the nature of a global
environment. Every test I've seen using a global environment uses it to set up
some expensive external resource, not something that can/should be set up for
each test anew. (Again this is unsurprising, since the environment is a global.)
PiperOrigin-RevId: 424003937
Change-Id: I9e8a825cb8900960dd65b85fe5ffcc0a337e57f3
dispatch. It will use the definition from the class the constructor of which
PiperOrigin-RevId: 421291241
Change-Id: If81e3d6d3774edfbbb4baaec8a3cd96566b3b09c
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.
We should perform an explicit type conversion to `unsigned char` before passing the
`const char` data to `IsValidXmlCharacter()` and `IsNormalizableWhitespace()` functions
in order to avoid compile time conversion warnings
Signed-off-by: Ayush Joshi <ayush854032@gmail.com>
unifying the behavior between Bazel and CMake
This fixes one of the CI failures on Windows
PiperOrigin-RevId: 417872531
Change-Id: I156989323b7e6d4a4420f4f9691b078829db933d
Example command:
```
clang_tidy '--config={Checks: "modernize-use-trailing-return-type"}' googletest-death-test-test.cc
```
Example error:
```
warning: use a trailing return type for this function [modernize-use-trailing-return-type]
TEST(NotADeathTest, Test) {
^
```
PiperOrigin-RevId: 414836261
Change-Id: I5f758423667559abfbf313190543666bc4ce0e6e
On KitKat, calling tzset with UTC+nn doesn't initialize all the
timezone state. If the previous timezone was something like
America/Chicago, then changing it to UTC+nn might have no effect.
Setting the timezone to an intermediate value like "UTC" avoids the
problem.
Works around https://github.com/android/ndk/issues/1604.
PiperOrigin-RevId: 413050236
Change-Id: I99b2d3330ae68f1d58cd2ca278d3eaae30bd1e83
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
Revert CL that updated example for SetUpTestSuite/TearDownTestSuite to initialize static member variables inline.
It seems that non-const static data members for some reason still must be initialized out-of-line.
PiperOrigin-RevId: 408913846
Update example for SetUpTestSuite/TearDownTestSuite to use modern C++ standards.
Currently it is using an outdated C++ construct (defining static member variables separately from the declaration).
PiperOrigin-RevId: 408663014
Add missing InitGoogleTest line in "Registering tests" example code
Copying the original code gives the following error message
"""
IMPORTANT NOTICE - DO NOT IGNORE:
This test program did NOT call testing::InitGoogleTest() before calling RUN_ALL_TESTS(). This is INVALID. Soon Google Test will start to enforce the valid usage. Please fix it ASAP, or IT WILL START TO FAIL.
"""
PiperOrigin-RevId: 408385714