Commit Graph

448 Commits

Author SHA1 Message Date
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
dmauro
79dc0f231a Googletest export
Disable -Wmismatched-tags warning for struct/class tuple_size

PiperOrigin-RevId: 337087493
2020-10-14 18:26:32 -04:00
dmauro
fb239f0e4c Googletest export
Fix -Wmismatched-tags error with struct tuple_size vs class tuple_size

PiperOrigin-RevId: 336930166
2020-10-14 18:26:15 -04:00
ofats
2cf1f99b97 Googletest export
Add helper methos to internal FlatTuple. Refactor constructors.

PiperOrigin-RevId: 336306681
2020-10-14 18:25:32 -04:00
Abseil Team
0555b0eacb Googletest export
Improve lookup of operator<< for user types

Without this fix, trying to use this class with googletest

  struct Foo {};

  template <typename OutputStream>
  OutputStream& operator<<(OutputStream& os, const Foo&) {
    os << "TemplatedStreamableInFoo";
    return os;
  }

results in an ambiguity error between the class' operator<< and the
operator<< in gtest-printers.h removed in this CL.

This fix also enables implicit conversions to happen, so that e.g.
we will find the base class operator<< if a subclass has no
operator<< of its own.

PiperOrigin-RevId: 336261221
2020-10-14 18:25:23 -04:00
Derek Mauro
4abb012c70 Merge pull request #2837 from inazarenko:duck_type_protos
PiperOrigin-RevId: 336087297
2020-10-14 18:25:04 -04:00
Abseil Team
2ff8d94d0e Googletest export
Update comment to suggest using SetUpTestSuite and TearDownTestSuite.

PiperOrigin-RevId: 334430329
2020-09-29 20:48:03 -04:00
Abseil Team
af1e75ce0b Googletest export
Add millisecond precision to start timestamp in XML/JSON output

- Previous timestamp had format YYYY-MM-DDThh:mm:ss, now YYYY-MM-DDThh:mm:ss.sss
- This conforms to the ISO 8601 standard

PiperOrigin-RevId: 329503623
2020-09-01 16:53:36 -04:00
Derek Mauro
ce654c2ff5 Merge pull request #2972 from srz-zumix:fix/remove_legacy_testcase_api_
PiperOrigin-RevId: 325220934
2020-08-07 13:08:18 -04:00
srz_zumix
7d47077245 fix tests 2020-08-02 09:18:13 +09:00
jasjuang
7bde252cb7 fix clang tidy modernize-use-equals-default warnings 2020-07-19 15:18:22 -07:00
vslashg
af287b4ffd Merge pull request #2903 from AmatanHead:informative-exception-asserts
PiperOrigin-RevId: 320425648
2020-07-15 14:09:20 -04:00
Mark Barolak
5e0cf72b7c Merge pull request #2718 from NINI1988:master
PiperOrigin-RevId: 317696457
2020-06-26 12:03:26 -04:00
Mark Barolak
62f388e15f Merge pull request #2891 from zoddicus:fixMinGW
PiperOrigin-RevId: 317666280
2020-06-26 12:03:15 -04:00
Vladimir Goncharov
0d2830b283 Make EXPECT_THROW and EXPECT_NO_THROW macros more informative
EXPECT_THROW and EXPECT_NO_THROW will now print exception type and message when an unexpected std::exception-derived error is thrown.

Fixes #2878
2020-06-20 11:45:45 +03:00
dmauro
8567b09290 Googletest export
Adds support for printing pointers of types char8_t, char16_t, and char32_t.

PiperOrigin-RevId: 316112767
2020-06-12 18:24:28 -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
9f287b46d1 Googletest export
Make visible ParseInt32 in case users have separate gmock/gtest libraries and hidden-by-default symbols.

This function is still considered an internal implementation detail and is subject to change without notice. It is still unsafe/unsupported to link together libraries built at different commits.

PiperOrigin-RevId: 315405429
2020-06-10 17:37:31 -04:00
Ryan Harrison
1eda5d825a Fix build issue for MinGW
Fixes #2885
2020-06-10 11:32:08 -04:00
dmauro
4fe018038f Googletest export
Adds support for printing the types char8_t, char16_t, and char32_t

This changes prints these types as Unicode code points. It is possible
that there is a better way of printing these types, but that change is
more complex, and the format in which Googletest prints these types is
subject to change if someone implements a better way of printing them.

This fixes the C++20 build, which removed support for printing these types.
https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2

Fixes #2854

PiperOrigin-RevId: 314826912
2020-06-05 03:57:06 -04:00
Gennadiy Rozental
07d4a6e93d Merge pull request #2742 from kuzkry:c++17-type-printers
PiperOrigin-RevId: 314593695
2020-06-05 03:56:58 -04:00
Krystian Kuzniarek
eb3953f805 make UniversalPrinter<std::any> support RTTI 2020-05-29 13:59:42 +02:00
Krystian Kuzniarek
843267f0f1 specialize UniversalPrinter<> for std::any (without support for RTTI) 2020-05-29 13:59:42 +02:00
Krystian Kuzniarek
95b0ea2cf5 specialize UniversalPrinter<> for std::optional 2020-05-29 13:59:42 +02:00
Krystian Kuzniarek
33b44c4b35 specialize UniversalPrinter<> for std::variant 2020-05-29 13:59:42 +02:00
dmauro
fd32ba66e2 Googletest export
Fix compile error from protected destructor of std::codecvt

PiperOrigin-RevId: 313584603
2020-05-28 19:55:23 -04:00
Abseil Team
85a4631946 Googletest export
Change 'suite' to 'case' in comments.

PiperOrigin-RevId: 313429487
2020-05-28 19:55:14 -04:00
Abseil Team
f3a59610fd Googletest export
Addresses https://github.com/google/googletest/issues/2848 by using `_wfopen(...)` on Windows

PiperOrigin-RevId: 312198825
2020-05-28 19:53:52 -04:00
Abseil Team
8a32680cee Googletest export
Fixed #2823 - Make it so that a semicolon appearing after an invocation of GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ does not trigger a redundant semicolon warning.

This works by introducing an else block with a statement that intentionally does not end with a semicolon, forcing users to place the semicolon after the expansion. The approach here is preferred as opposed to removing semicolons that appear after each invocation because complete statements that do not have a visible semicolon or braces confuse users and code formatters, since the macro invocation looks superficially like an expression.

PiperOrigin-RevId: 311327491
2020-05-13 20:35:57 -04:00
vslashg
e589a33717 Merge pull request #2751 from calumr:quiet-flag
PiperOrigin-RevId: 309958629
2020-05-05 17:07:14 -04:00
Igor Nazarenko
4c9ad191e1 Detect proto messages based on presense of DebugString. 2020-05-05 11:06:33 -07:00
Gennadiy Rozental
472cd8fd8b Merge pull request #2818 from inazarenko:master
PiperOrigin-RevId: 308711492
2020-05-01 17:12:10 -04:00
Gennadiy Rozental
b99b421d8d Merge pull request #2818 from inazarenko:master
PiperOrigin-RevId: 308650221
2020-05-01 17:12:01 -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
1b3eb6ef34 Googletest export
Explicitly define copy constructors used in googletest tests

As of C++11, providing a user-declared copy assignment operator should
suppress the availability of an implicit default copy constructor.
Classes that provide (or delete) a copy assignment operator must provide
their own copy constructor if one is desired. This may be an explicit
default copy constructor if appropriate.

As googletest is a C++11 codebase, this change should be made without
qualification.

This addresses the -Wdeprecated-copy warnings issued by trunk clang:

While compiling googletest/test/googletest-death-test-test.cc:

In file included from .../googletest/test/googletest-death-test-test.cc:33:
.../googletest/include/gtest/gtest-death-test.h:196:8: error: definition of implicit copy constructor for 'ExitedWithCode' is deprecated because it has a user-declared copy assignment operator [-Werror,-Wdeprecated-copy]
  void operator=(const ExitedWithCode& other);
       ^
.../googletest/test/googletest-death-test-test.cc:279:16: note: in implicit copy constructor for 'testing::ExitedWithCode' first required here
  EXPECT_PRED1(pred0,  status0);
               ^

While compiling googletest/test/googletest-param-test-test.cc:

.../googletest/test/googletest-param-test-test.cc:502:8: error: definition of implicit copy constructor for 'NonDefaultConstructAssignString' is deprecated because it has a user-declared copy assignment operator [-Werror,-Wdeprecated-copy]
  void operator=(const NonDefaultConstructAssignString&);
       ^
.../googletest/test/googletest-param-test-test.cc:507:36: note: in implicit copy constructor for 'NonDefaultConstructAssignString' first required here
      Combine(Values(0, 1), Values(NonDefaultConstructAssignString("A"),

This matches other changes made elsewhere in the googletest codebase,
such as 306f3754a7. Perhaps those previous changes did not consider
test code.

PiperOrigin-RevId: 307495126
2020-05-01 17:11:08 -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
Igor Nazarenko
9d580ea805 Enable protobuf printing for open-source proto messages. 2020-04-19 17:30:50 -07:00
Abseil Team
c344cb5a8d Googletest export
This change updates testing::internal::IsAProtocolMessage to return true not
just for full proto messages but also for lite ones (i.e. those inheriting
directly from MessageLite).

PiperOrigin-RevId: 304286535
2020-04-04 18:05:22 -04:00
vslashg
189299e957
Merge branch 'master' into quiet-flag 2020-03-27 15:36:58 -04:00
Abseil Team
1ced315a48 Googletest export
Add --gtest_fail_fast support to googletest.

  - Analogous functionality to to golang -test.failfast and python --failfast
  - Stops test execution upon first test failure.
  - Also add support Bazel equivalent env var (TESTBRIDGE_TEST_RUNNER_FAIL_FAST)

PiperOrigin-RevId: 302488880
2020-03-24 17:32:07 -04:00
vslashg
dbe804f986 Merge pull request #2746 from Romain-Geissler-1A:master
PiperOrigin-RevId: 302045808
2020-03-20 20:15:24 -04:00
Calum Robinson
fb19f57880 Add GTEST_BRIEF option
Only prints failures and a total pass count
2020-03-19 20:33:58 +00:00
Abseil Team
482ac6ee63 Googletest export
Move internal function out of header because Hyrum's law always wins.

PiperOrigin-RevId: 301446904
2020-03-17 17:20:47 -04:00
Abseil Team
0bf8ea3065 Googletest export
Simplify the fallback printing logic to have a single sequence of trial printers.

PiperOrigin-RevId: 298621376
2020-03-17 17:20:15 -04:00
Romain Geissler
a1b0173df9 Make sure IsATTY does not clobber errno.
Exposition of the problem:
> cat main.cpp

TEST(errnoTest, errnoTest)
{
    ASSERT_EQ(errno, 0);
}

int main(int argc, char** argv)
{
    ::testing::InitGoogleTest(&argc, argv);

    return RUN_ALL_TESTS();
}

Compiled with gcc 10 like this:
> g++ -pthread -o runtest main.cpp -Wl,-Bstatic -lgtest -Wl,-Bdynamic

Before patch:
>  ./runtest
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from errnoTest
[ RUN      ] errnoTest.errnoTest
[       OK ] errnoTest.errnoTest (0 ms)
[----------] 1 test from errnoTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

(output is colored, I run this inside an interactive terminal).

> ./runtest | cat
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from errnoTest
[ RUN      ] errnoTest.errnoTest
main.cpp:5: Failure
Expected equality of these values:
  (*__errno_location ())
    Which is: 25
  0
[  FAILED  ] errnoTest.errnoTest (0 ms)
[----------] 1 test from errnoTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] errnoTest.errnoTest

 1 FAILED TEST

(output is not colored, since IsTTY return false, because of the pipe,
however it also clobbered errno for the tests).

After the patch, both cases are working fine:
> ./runtest
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from errnoTest
[ RUN      ] errnoTest.errnoTest
[       OK ] errnoTest.errnoTest (0 ms)
[----------] 1 test from errnoTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

> ./runtest | cat
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from errnoTest
[ RUN      ] errnoTest.errnoTest
[       OK ] errnoTest.errnoTest (0 ms)
[----------] 1 test from errnoTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.
2020-03-11 22:39:20 +00:00
Abseil Team
e588eb1ff9 Googletest export
Rename internal color enumerators to avoid conflicts with curses.h macro definitions.
Fixes #2685

PiperOrigin-RevId: 297639382
2020-02-28 16:41:09 -05:00
NINI1988
ff4872659a Add missing call for gtest_list_output_unittest_ unitTest.
Add unitTest for fixed TEST_P line number.
Use CodeLocation TestInfo struct.
2020-02-21 17:51:29 +01:00
NINI1988
25385c23e9 Fix: shadow member 2020-02-18 22:55:20 +01:00
NINI1988
921972cba3 Add correct line number to TEST_P test cases for gtest_output. 2020-02-18 22:23:44 +01:00
Abseil Team
6f5fd0d719 Googletest export
Add gmock Matcher<std::string_view> specialization.

PiperOrigin-RevId: 294443240
2020-02-11 15:50:26 -05:00