According to the comments, "Feature-indicating macros",
such as GTEST_IS_THREADSAFE should be defined to 1 when supported
and otherwise undefined (never 0).
PiperOrigin-RevId: 513944266
Change-Id: I0f5c8bed107a5f20e957ec7c70339540ca2fe831
These macros should only be used within googletest, so changing them will not
affect external users.
This allows compiling with -Wundef (#3267).
PiperOrigin-RevId: 513943800
Change-Id: I697b1005c29b0d5af06f583f202d86db48b567b9
For MSVC, gmock_output_test.py output struct std::pair<int,bool>, for GCC, it's output
std::pair<int, bool>, it's not the same, my intention is getting these to be same by removing
struct for MSVC's outptu, and strip redundant space for GCC.
As a by-product,
```
#ifdef _MSC_VER
#define ERROR_DESC "class std::runtime_error"
#else
#define ERROR_DESC "std::runtime_error"
#endif
```
can be simplified to
```
#define ERROR_DESC "std::runtime_error"
```
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Keep declarations in c++ < 17 using new macro, GTEST_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL.
Fixes#4148.
PiperOrigin-RevId: 511510401
Change-Id: I76c3f2fccf07a0978adcbe5f8f0203b9d0c33872
Historically, calls to RecordProperty with values that are convertible to
int64_t have been casted to int64_t. The result was that types like float or
double would be truncated when printed (e.g., 4.75 -> 4). This change removes
the cast so that the types are printed in a more appropriate manner.
PiperOrigin-RevId: 511238685
Change-Id: I80de5db14462da2a3e1f476086025ae514383a17
When googletest and googlemock are included as a git submodule and referenced
as part of an existing CMake project, multiple warnings are printed out due to
not setting a value for the CMP0069 policy.
Use "#if defined(_MSC_VER)" instead of "#if _MSC_VER" to be consistent
with other usages in googletest and to work with the "-Wundef" warning.
PiperOrigin-RevId: 508087630
Change-Id: I29c16fd2fa51a9dfecd55e10362a020318318956
Nothing defines GTEST_USES_PCRE anymore. It was only meant for
internal use, so nothing public should be relying on it:
https://github.com/google/googletest/issues/2735#issuecomment-644849438.
Found when compiling with "-Wundef".
Fixes#2735.
PiperOrigin-RevId: 507823660
Change-Id: Ie19e576ff01dc3b16381338578ece92adccfc09b
The GTEST_DISABLE_MSC_WARNINGS macros already have an _MSC_VER check.
This change also adds a missing GTEST_DISABLE_MSC_WARNINGS_POP_ in
gtest-typed-test_test.cc.
PiperOrigin-RevId: 506636248
Change-Id: Ifdc044528f5448fbf0175887d1671f1e1f3040b9
Prior to this change we had a mixture of pragmas and
GTEST_DISABLE_MSC_WARNINGS; this change consolidates all instances
to use the macros.
PiperOrigin-RevId: 505786926
Change-Id: I2be8f6304387393995081af42ed32c2ad1bba5a7
Possible unbalanced tuple unpacking with sequence defined at line N:
left side has 1 label(s), right side has 0 value(s)
[unbalanced-tuple-unpacking]
PiperOrigin-RevId: 504640001
Change-Id: If8d6038a9acf74a409cb6b6ee30cea7745b4b303
These files were formatted with automated tools. The remaining Python
files require some manual fix ups, so they will be fixed separately.
PiperOrigin-RevId: 504579820
Change-Id: I3923bd414bffe3ded6163ec496cd09ace3951928
In #4113 a user says Max clashes with a macro. Since it is only used in
a test, use std::numeric_limits::max() instead.
Note that in headers, the macro issue can be mitigated with
parenthesis like this: `(std::numeric_limits<T>::max)()`
PiperOrigin-RevId: 504284906
Change-Id: Ibf430caec1a6afdf6b303534fec6a4fd00a6373f
Everywhere else in the code, we check the value of GTEST_OS_ESP8266, not just
whether it is defined.
PiperOrigin-RevId: 499946909
Change-Id: I86f7e8947abb4e928fc24d1416d8237987b27845
Use "#if defined(_MSC_VER)" instead of "#if _MSC_VER" to be consistent with other usages in the file and to work with the "-Wundef" warning.
PiperOrigin-RevId: 499471290
Change-Id: I34a9442eecf266afd74d4332cab7d39766df4ed9
To make debug output readable, we still use the faster 6-digit precision
sometimes, but only if it will round-trip.
This way, when a test fails due to a very small difference in floating-point
numbers, users will have enough digits to see the difference.
PiperOrigin-RevId: 488958311
Change-Id: Ibcac43f48a97006d89217530c69386cc4fa2735c
This matches the intention and documentation of terse printing which generally avoids printing the pointer.
PiperOrigin-RevId: 481178950
Change-Id: I27039dac1870934d2d5b212e2cc7e97ab82c5b34
In developing tests for the fuchsia debugger, it was found that in addition to catching gtest failures (which are implemented as software breakpoints) we also see PageFault exceptions, caused by this nullptr dereference.
PiperOrigin-RevId: 479365782
Change-Id: I84d805d94c2e46b6f3c982ca1ae49c6ac3ed3430
If this ever turns out to be a performance issue, we could use std::conditional and std::is_same to avoid copying std::strings.
Fixes#3949
PiperOrigin-RevId: 465353572
Change-Id: If2d691bccb626c692c87e006df5afe88a4ed1542
PDB files should be created at the same location as their primary
artifact, which is either static library or a DLL.
On Windows, an artifact location is controlled by:
* RUNTIME_OUTPUT_DIRECTORY is a directory of a DLL artifact.
* ARCHIVE_OUTPUT_DIRECTORY is a directory of a LIB artifact.
A PDB file location is controlled:
* PDB_OUTPUT_DIRECTORY should match a directory of a DLL artifact.
* COMPILE_PDB_OUTPUT_DIRECTORY should match a directory of a LIB artifact.
CMake policy CMP0094 controls a lookup strategy used to find a Python
executable:
* CMP0094=OLD selects a Python executable with a higher version.
* CMP0094=NEW selects a Python executable found earlier in PATH.
NEW behavior is critical in presence of a Python virtual environment
established and activated, i.e. added to the PATH variable.
In case GoogleTest is embedded into a larger project, the result of
`find_package(Python)` affects the whole build, not only GoogleTest
component itself.
The way temporary directories were discovered from
environment variables in different operating systems
was inconsistent.
On Windows, only the system-specific environment variable
TEMP was considered, but not the bazel-common TEST_TMPDIR.
On Unix, only TEST_TMPDIR was considered, but not
the otherwise typical system specific TMPDIR.
Now, always consider TEST_TMPDIR first, followed by the
system-typical environment variable (TEMP on Windows, TMPDIR on Unix)
before falling back to a default on that particular system.
Also: the value for the temporary directory coming from the
environment variable was only checked for a trailing directory
separator on Windows (and appended if needed), not on the other
platforms.
Make this also consistent accross the systems: Now always apply
the same logic to all of these (to accomodate
tests that just concatenate TempDir() without directory separator).
PiperOrigin-RevId: 447909830
Change-Id: I9ea17acdf5944eb2a965615fd9cf142878c33a58
This CL adds a couple missing overrides in the googletest sources.
These were found downstream when -Wsuggest-override and
-Wsuggest-destructor-override were enabled.
PiperOrigin-RevId: 447754883
Change-Id: I7bf35a8757cbc5ae157827037aa3d13f47392406
Currently MacOS falls back to generic /tmp, but
for all intents and purposes it should behave like
other Unixes using the TEST_TMPDIR environment variable
if available (this environment variable is set in bazel,
which sets up a unique temp directory for the test
process).
While at it, remove an incorrect #endif comment, that
looks like a leftover from some older implementation.
PiperOrigin-RevId: 446108391
Change-Id: I118eacf6e86a41d26cb81a130f7c54cccc0c5665
bazel build --define=absl=1 ...
A dependency on RE2 is now required when building GoogleTest with Abseil.
Using RE2 will provide a consistent cross-platform regex experience.
Users will need to add the com_googlesource_code_re2, bazel_skylib,
and platforms repository to their WORKSPACE files. See our WORKSPACE
file in the root directory of this project for an example of how to
add the dependencies.
Please note that the com_googlesource_code_re2 dependency must use a
commit from the `abseil` branch of the project:
https://github.com/google/re2/tree/abseil
PiperOrigin-RevId: 444650118
Change-Id: I45c55b26684c0c50d721a05b81c5f8a0c092400f
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
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