518 Commits

Author SHA1 Message Date
David Matson
9b0b00a104 Add support for streaming results on Windows (fixes #3935). 2024-03-14 10:55:23 -07:00
Abseil Team
96519a4019 Use _Exit instead of _exit in GoogleTest
_Exit is standardized since C99, whereas _exit is POSIX-only.

Fixes: #4447
PiperOrigin-RevId: 605000352
Change-Id: Ibfa84edaa043bd003a21383e8148bf45be7217f6
2024-02-07 09:01:25 -08:00
Abseil Team
64be1c79fa Destroy installed environments in normal code, not in static teardown.
Destruction in static teardown causes issues for Environments which own threads and try to join them in their destruction.

This may be a breaking change for users who call RUN_ALL_TESTS multiple times in the same main function if they also install environments, or those who access registered environments after RUN_ALL_TESTS.

The easiest fix is to only call RUN_ALL_TESTS once as the last line of the main function. Another potential fix is to re-register new instances of the Environment once before each call to RUN_ALL_TESTS.

PiperOrigin-RevId: 604800795
Change-Id: I37c44d4aca4a238052649f45a4b6b9cfb5355b71
2024-02-06 16:31:00 -08:00
Abseil Team
456574145c Modifications to improve portability of googletest tests.
PiperOrigin-RevId: 603034597
Change-Id: I4d716ed67f80f41075bfa266d975460d2ac27eb6
2024-01-31 06:51:14 -08:00
Abseil Team
6fdb4c303f Do not emit stack traces for messages generated by SUCCEED()
Stack traces in assertion failures are an extremely useful tool for
developers tasked with investigating failing tests. It's difficult to
understate this. In contrast to ordinary test assertions (e.g.,
ASSERT_TRUE or EXPECT_FALSE), SUCCEED() is a developer-authored
directive that indicates a success codepath. In fact, the documentation
states that this directive doesn't generate any output. Generating stack
traces for uses of SUCCEED() is wasted work since they are never
printed. If this were to change one day in the future, they still would
not be useful since any emitted message would include the file and line
number where SUCCEED was used. In addition to being noise in the output
in this case, symbolization of stack traces is not free. In some
Chromium configurations, symbolization for use of SUCCEED() can incur a
cost in excess of 25 seconds for a test that otherwise takes 0-1ms; see
https://crbug.com/1517343.

In this CL, we suppress generation and emission of stack traces for
kSuccess messages to reduce the overhead of SUCCEED().

PiperOrigin-RevId: 602832162
Change-Id: I557dd6a1d3e6ed6562daf727d69fd01fe914827b
2024-01-30 13:55:46 -08:00
Abseil Team
cfe5076a8b Do not emit stack traces for messages generated by GTEST_SKIP()
Stack traces in assertion failures are an extremely useful tool for
developers tasked with investigating failing tests. It's difficult to
understate this. In contrast to ordinary test assertions (e.g.,
ASSERT_TRUE or EXPECT_FALSE), GTEST_SKIP is a developer-authored
directive to skip one or more tests. Stack traces emitted in skip
messages do not give the developer useful information, as the skip
message itself contains the code location where GTEST_SKIP was used. In
addition to being noise in the output, symbolization of stack traces is
not free. In some Chromium configurations, symbolization in a skipped
test can incur a cost in excess of 25 seconds for a test that otherwise
takes 0-1ms; see https://crbug.com/1517343#c9.

In this CL, we suppress generation and emission of stack traces for
kSkip messages to reduce the output noise and overhead of GTEST_SKIP().

PiperOrigin-RevId: 598899010
Change-Id: I46926fed452c8d7edcb3d636d8fed42cb6c0a9e9
2024-01-16 11:19:24 -08:00
Abseil Team
2dd1c13195 Fix RE::Init for Android and NetBSD.
This is a somewhat recent change for Android (I'm not clear on whether it's a recent change for NetBSD, or if Android was just very behind on its implementation), so while this worked fine as recently as API 32 devices, REG_GNU is required for API 34 (API 33 untested).

A test actually caught this, but https://github.com/google/googletest/pull/4334 "fixed" the test rather than the implementation. This CL also reverts the test change so it can catch the failure.

PiperOrigin-RevId: 571126374
Change-Id: I420dfcedea58f2c8b605f699515d744006c0a9d9
2023-10-05 14:13:04 -07:00
Tanzinul Islam
b86bf840d1 Count threads after thread-creation while still holding mutex lock
The `Mutex` is locked with the `MutexLock` before spawning the thread, so that the thread is prevented from completing (by being blocked on `Mutex`) before the new thread count is obtained. However, the existing bug (introduced in 22e6055) releases `Mutex` before obtaining the new thread count, which allows the thread to run to completion in the meantime.

Also, since the `(thread_count_after_create != starting_count + 1)` condition (line 328) skips the remainder of the `for`-loop body on every iteration, `thread_count_after_join` stays uninitialized.

I believe this is why [this test failed][1] on the macOS CI with this trace:

```
[----------] 1 test from GetThreadCountTest
[ RUN      ] GetThreadCountTest.ReturnsCorrectValue
googletest/test/googletest-port-test.cc:350: Failure
Expected equality of these values:
  thread_count_after_create
    Which is: 1
  starting_count + 1
    Which is: 2

googletest/test/googletest-port-test.cc:351: Failure
Expected equality of these values:
  thread_count_after_join
    Which is: 140493185949400
  starting_count
    Which is: 1

[  FAILED  ] GetThreadCountTest.ReturnsCorrectValue (2 ms)
[----------] 1 test from GetThreadCountTest (2 ms total)
```

[1]: https://github.com/google/googletest/actions/runs/6064919420/job/16453860690?pr=3049
2023-09-03 16:46:02 +01:00
Dino Radakovic
8a6feabf04 googletest: Add universal printer for std::span
Fixes #4318

PiperOrigin-RevId: 560089120
Change-Id: I9d0d098140033520266747a1689e953ee8307c47
2023-08-25 07:46:02 -07:00
Copybara-Service
987e225614 Merge pull request #4333 from ngie-eign:gtest_help_test-fix-FreeBSD
PiperOrigin-RevId: 557197748
Change-Id: I55b86353f5351bbcbdf8e6bca70e82d7383a5080
2023-08-15 11:39:35 -07:00
Dino Radakovic
dd9a956904 gtest_help_test: Make method names snake_case, conforming with [the style guide](https://google.github.io/styleguide/pyguide#316-naming)
PiperOrigin-RevId: 557133618
Change-Id: I27202ee91ee81b3d2e4c28102190d2bde8efba05
2023-08-15 08:00:31 -07:00
Dino Radakovic
6513d0272d gtest_help_test: Inline test helper functions
`TestNonHelpFlag` is only a few asserts with no logic, which is easier to read in line, and helper `TestHelpFlag` is used in a single test case.

PiperOrigin-RevId: 557122793
Change-Id: I7367424abfbb883c10c260fae066a2071e5dfa0e
2023-08-15 07:11:58 -07:00
Copybara-Service
fc234d6d18 Merge pull request #4334 from ngie-eign:fix-RETest-non-ABSL
PiperOrigin-RevId: 557122083
Change-Id: I77fb7fe99baf9cbf341ad37d4b651a0ac606b549
2023-08-15 07:08:30 -07:00
Dino Radakovic
d76e9e0dd9 gtest_help_test: Delete obsolete helper TestUnknownFlagWithAbseil
PiperOrigin-RevId: 557116814
Change-Id: I91e06b0d6001952366c50201b67491475a1f98af
2023-08-15 06:42:46 -07:00
Enji Cooper
77485ff004 Fix RETest/1.ImplicitConstructorWorks on non-ABSL platforms
The last regular expression specified in the test is not technically
POSIX compatible. Use `[[:alnum:]_]` instead of `\w+`; the latter is a
Perl-compatible regular expression.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2023-08-07 21:37:54 -07:00
Enji Cooper
22eb2de1ef Fix GTestHelpTest.TestHelpFlag on FreeBSD
The test supported a variety of BSDs, including kFreeBSD, but not FreeBSD.

Move the BSD checks to a separate function and support checking for
FreeBSD, in addition to kFreeBSD.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2023-08-07 20:18:01 -07:00
Copybara-Service
455fcb7773 Merge pull request #4323 from pgawro:gtest_ExpectThrowTest_DoesNotGenerateUnreachableCodeWarning
PiperOrigin-RevId: 553485739
Change-Id: I6581215e6db514397177af39381eea4d121f32bd
2023-08-03 08:32:42 -07:00
Derek Mauro
58e37f7e99 Add googletest-message-test to the Bazel tests
It appears to have been unintentionally left out

PiperOrigin-RevId: 553141410
Change-Id: I8adac55a3df0ec12d6fe03446f71858fc702e178
2023-08-02 07:40:55 -07:00
Phoebe Liang
e7fd109b53 Make testing::Message support streamed AbslStringify values
This allows types that provide an AbslStringify definition to be streamed into GoogleTest macros.

PiperOrigin-RevId: 552914482
Change-Id: I5fb386980d4d24873f95f0a8ef83067a6a3c86ac
2023-08-01 14:01:41 -07:00
Patryk Gawroński
2f83a6e8f8 gtest: Supress warning about set unused variable
Modified test ExpectThrowTest.DoesNotGenerateUnreachableCodeWarning
2023-07-27 01:49:57 +02:00
Abseil Team
01e18376ef Make AbslStringify usage public in GoogleTest
Fixes #4314

PiperOrigin-RevId: 549986457
Change-Id: Iff74f02ab1c106696f288540e9c623d56b76e3f7
2023-07-21 10:36:25 -07:00
Abseil Team
f269e15c5c Resolve an issue where the resolution of operator<< overloads would attempt to instantiate the incomplete testing::internal::Secret type.
PiperOrigin-RevId: 543799815
Change-Id: Ic0a4f48d825bef26cb8cc74d8a0117b3a5ef3f14
2023-06-27 11:17:00 -07:00
Copybara-Service
8e32de89cf Merge pull request #4300 from eltociear:patch-1
PiperOrigin-RevId: 543586460
Change-Id: I87ee05c4b77fb643a3381018568a4765d0a12b18
2023-06-26 17:24:42 -07:00
Ikko Eltociear Ashimine
1361c77c4d
Fix typo in googletest-catch-exceptions-test.py
FITLER_OUT_SEH_TESTS_FLAG -> FILTER_OUT_SEH_TESTS_FLAG
2023-06-23 01:20:10 +09:00
Abseil Team
18fa6a4db3 Allow clients to un-suppress output from gUnit EXPECT_EXIT tests.
This is useful for running individual tests in a separate process, which is
useful for testing e.g. flag changes which have a process-global effect.

PiperOrigin-RevId: 540580573
Change-Id: I18a5d24d79425a9d595be3369efc44e2f655f6f8
2023-06-15 07:52:45 -07:00
Dino Radakovic
4c7aee827e Skip entire test suite with GTEST_SKIP() in SetUpTestSuite
Fixes #4273

PiperOrigin-RevId: 540254167
Change-Id: I2555740d10284223539035bf73f88554fcf73f8a
2023-06-14 06:41:11 -07:00
Copybara-Service
a3580180d1 Merge pull request #4146 from lygstate:fixes_std_pair_diff
PiperOrigin-RevId: 528781910
Change-Id: I4038332a6255921792bfb4a8098aa84243d48e15
2023-05-02 07:52:02 -07:00
Andy Soffer
76bce79a34
Merge branch 'main' into fixes_std_pair_diff 2023-05-01 14:27:38 -04:00
Copybara-Service
f345b2ca6a Merge pull request #4227 from Vertexwahn:fix-spelling
PiperOrigin-RevId: 528474013
Change-Id: I60cd509aded8d8b02423ea1b07c2c27e3709a808
2023-05-01 08:05:40 -07:00
Abseil Team
dea0484e4d Use Abseil Flag public API for flag parsing.
This change brings InitGoogleTest semantic in accordance with the official documentation: only GoogleTest flags are removed from argc/argv. The rest of the flags remains in place. We do nothing special for flags with unrecognized gunit_/gtest_ prefix and we do not report them.

PiperOrigin-RevId: 527257221
Change-Id: Ibb29a1bda1a44251a4ee579c0fb5bbdfd9965c21
2023-04-26 07:13:51 -07:00
Vertexwahn
97408cae55 Fix spelling 2023-04-25 20:20:01 +02:00
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
Tom Hughes
a5308bb992 Add missing std includes
PiperOrigin-RevId: 525850646
Change-Id: I64387f5b933beb79cd05636dca81b7a75213383e
2023-04-20 14:29:09 -07:00
Tom Hughes
d7fb5e1af4 Fix spelling
PiperOrigin-RevId: 525820426
Change-Id: Ib5baa8da4a54ebb17b6ace12240ed03eedb46091
2023-04-20 12:36:18 -07:00
Tom Hughes
d8a5fb7ee6 Add missing std includes
PiperOrigin-RevId: 525794940
Change-Id: Ib2639058610c91cbffbb0f22a5e71573e0cbd651
2023-04-20 11:01:56 -07:00
Abseil Team
7f6f9c12ad Support --gtest_stream_result_to on macOS
This seems to just have been an oversight. POSIX socket APIs work just
fine on macOS.

Fixes https://github.com/google/googletest/issues/4214.

PiperOrigin-RevId: 523398386
Change-Id: I9d56cd9c6933318c1f0b0024f7fef44122fd0c83
2023-04-11 07:41:50 -07:00
Aaron Jacobs
5fce13091d gtest.cc: add a newline after a failure when there is no OS stack trace.
This makes the behavior consistent when GTEST_STACK_TRACE_DEPTH is set to zero
and not: there is always vertical whitespace separating failure messages.

PiperOrigin-RevId: 518744611
Change-Id: I5b4af40633849850660504c3f497a76601d4311d
2023-03-22 20:19:44 -07:00
Abseil Team
28219b169c Fix typo in test case name.
PiperOrigin-RevId: 517814929
Change-Id: I2bc498ba048d4deab1cf2a021487f63fe44c466d
2023-03-19 14:30:57 -07:00
Copybara-Service
837f2229a9 Merge pull request #4182 from venik:venik-char8-lib-fix
PiperOrigin-RevId: 517470997
Change-Id: I12b079dc1536f136dd0514871fe79f9678b1fd6a
2023-03-17 11:58:34 -07:00
Abseil Team
50e07d1c92 Apply clang-tidy fixes
PiperOrigin-RevId: 515265927
Change-Id: Iea11668fa4bbf08f6d418a3823e836fb5b874dcc
2023-03-09 01:19:58 -08:00
Abseil Team
82a570453c Apply clang-tidy fixes
PiperOrigin-RevId: 514936218
Change-Id: I24c443a2ca75c875052b0cf2d0a48e808d03ae43
2023-03-07 22:33:56 -08:00
Tom Hughes
678c1c73de Fix compilation of googletest-printers-test.cc when using -Wundef
#3267

PiperOrigin-RevId: 514858420
Change-Id: Ic712aafad25f5e63ae48f647557de95cef890978
2023-03-07 15:34:41 -08:00
Alexander Nikforov
92f0d72507 __cpp_char8_t does not cover std::u8string implementation, but __cpp_lib_char8_t does 2023-03-06 16:34:55 -08:00
Tom Hughes
16feffa8fa Replace "#if GTEST_HAS_ABSL" with "#ifdef GTEST_HAS_ABSL"
This allows compilation with "-Wundef" (#3267).

PiperOrigin-RevId: 513945230
Change-Id: I45ef19c7ff3d20e97216bd031d406a03365471da
2023-03-06 07:16:32 -08:00
Tom Hughes
dc10c3b5e5 Use "#ifdef" with public macros
This allows compilation with "-Wundef" (#3267).

PiperOrigin-RevId: 513944726
Change-Id: I1a3854bb2333d5dec6c0ff91ee1eddd9a766ab91
2023-03-06 07:15:44 -08:00
Tom Hughes
23142843f7 Use "#ifdef GTEST_OS_..." instead of "#if GTEST_OS_..."
This is compatible with compiling with "-Wundef" (#3267).

PiperOrigin-RevId: 513943378
Change-Id: I47cf5fabbb77be061c4483a0adc54511af6b191c
2023-03-06 07:14:21 -08:00
Yonggang Luo
6f1c4b3d7b Fixes the test gmock_output_test.py with MSVC
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>
2023-03-01 00:13:32 +08:00
Tom Hughes
750d67d809 Remove int64_t cast in RecordProperty
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
2023-02-21 10:25:39 -08:00
Abseil Team
f063cd25c9 Remove strdup usage
PiperOrigin-RevId: 509947007
Change-Id: I31e1274afa889776829c877c40c9af589298dcf2
2023-02-15 15:22:10 -08:00
Abseil Team
2057566e4e Remove some filesystem APIs and tests under !GTEST_HAS_FILE_SYSTEM
PiperOrigin-RevId: 509537606
Change-Id: I68f7054e34b1fe76c1fd85099fffa4ee3c2b00c0
2023-02-14 08:33:42 -08:00