The extra tests check that the xml output is correct when a failure occurs before skipping, and that the right skip message is added to the file.
The json file had to be fixed because it's the same executable.
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
Google Test and Google Mock require matching versions to work,
so this requirement should be described in the pkgconfig files.
This change is derived from the one used for the Fedora gtest package.
Signed-off-by: Neal Gompa <ngompa13@gmail.com>
When building packaged shared libraries for use, having the version
set makes it so that the soname is set correctly for parallel installation.
This change is derived from the one used for the Fedora gtest package.
Signed-off-by: Neal Gompa <ngompa13@gmail.com>
Add tests checking that ::testing::MockFunction template argument can
be deduced in a function call context. This is a property raised in the
review, however, not checked before by any tests.
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.
Relax the implementation of MatcherCast to allow conversion of `Matcher<T>` to
`Matcher<const T&>`. They have the same match signature.
PiperOrigin-RevId: 297115843
Allow construction of an Action from a callable of zero args
Action already allows construction from a callable with the same args as the mocked function, without needing to wrap the callable in Invoke. However, if you don't care about the arguments to the mocked function you need to either accept all of them or wrap your callable in InvokeWithoutArgs. This change makes both of those unnecessary, since it allows you to pass a no-args callable to Action directly.
PiperOrigin-RevId: 296117034
Remove the CMAKE_CXX_STANDARD from GoogleTest's CMakeLists.txt
This causes ABI issues since it can create a mixed-mode build. The
value should be inherited from the top-level build if it needs to be
set.
PiperOrigin-RevId: 294730724
Fix gmock_gen to use MOCK_METHOD instead of old style macros. Fix several
related bugs in argument parsing and return types.
- handle commas more correctly in return types
- handle commas correctly in arguments
- handle default values more correctly
PiperOrigin-RevId: 294435093
Refactor function GetNextPrime so that the loop precondition is checked before
loop instead of during every loop run. Also by removing the loop condition,
it shows that the only exit from the loop is the return statement.
PiperOrigin-RevId: 293932783
Get rid of gmock-generated-matchers.h and gmock-generated-matchers.h.pump.
Stop using pump for MATCHER* macroses generation.
PiperOrigin-RevId: 293878808
Tag the function generated by MATCHER with GTEST_ATTRIBUTE_UNUSED_ to fix CI builds of gmock-matchers_test.cc vs. -Wunused-function.
See https://github.com/google/googletest/pull/2697 for breakage.
PiperOrigin-RevId: 293669752
Get rid of gmock-generated-function-mockers.h and
gmock-generated-function-mockers.h.pump.
Stop using pump for GMOCK_METHOD* macroses generation.
PiperOrigin-RevId: 293454519
Pass method's parameters count to internal GMOCK_METHOD* macro.
This will help removing copypaste in every GMOCK_METHOD* macro in future.
PiperOrigin-RevId: 292932554
Disable warning C4800 for Visual Studio 2019.
The compiler warning C4800 is disabled by default in Visual Studio 2019,
but it can be enabled on the command line. The only version of
Visual Studio that does not support warning C4800 is Visual Studio 2017.
PiperOrigin-RevId: 292624510
Create implementation macroses for matchers to move variadic parameters to the
end of parameters list.
To save backward compatibility, old macroses will be still taking `description`
parameter as the last one. But they will use INTERNAL macro that takes
`description` as the second parameter.
PiperOrigin-RevId: 291724469
Move part of functionality of Matcher* class to the base one. Reduce copypaste.
Make constructor and conversion operator of Matcher* class independent of pump.
PiperOrigin-RevId: 291405510
Deleted an orphaned duplicate file and exclude another that shouldn't be part of :gtest_all_test.
This showed up while trying to debug the presubmit failure for: https://github.com/google/googletest/pull/2683
PiperOrigin-RevId: 291398123
Add missing explicit keyword for gmock_Impl constructor.
When switching to using GMOCK_PP in ACTION* macroses `explicit` keyword was
missed in gmock_Impl constructor causing ClangTidy warnings in ACTION_P macro.
PiperOrigin-RevId: 291159975
Allow copying of the string in MatchAndExplain.
Otherwise, conversions from std::string_view to std::string will fail as being
explicit
PiperOrigin-RevId: 290301103
Add extra filtering so that the reported message differentiates between the case where INSTANTIATE_TEST_SUITE_P is missing vs. the case where TEST_P is missing.
PiperOrigin-RevId: 290114508
Use GMOCK_PP to create GMOCK_INTERNAL_ACTION macro.
Create GMOCK_INTERNAL_ACTION macro that generates ACTION_P* macroses using
GMOCK_PP.
PiperOrigin-RevId: 289815906
Use GMOCK_PP to generate args boilerplate.
Move common args describing part to separate macroses that uses GMOCK_PP to
generate sequences.
PiperOrigin-RevId: 289655624
Add GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST to mark a paramaterized test as allowed to be un-instantiated.
This allows test suites, that are defined in libraries and, for other reasons, get linked in (which should probably be avoided, but isn't always possible) to be marked as allowed to go uninstantiated.
This can also be used to grandfather existing issues and expedite adoption of the checks with regards to new cases before they can be fixed.
PiperOrigin-RevId: 289581573
Removing GTEST_API from TrueWithString.
This type is only used in test code on one side of a DLL boundary so it is not
necessary.
PiperOrigin-RevId: 288927929
Move part of functionality of Action* class to the base one. Reduce copypaste.
Make constructor and conversion operator of Action* class independent of pump.
PiperOrigin-RevId: 288907005
Use C++11 variadic templates for Invoke in gmock-generated-actions.h.
Replace InvokeArgumentAdl with Invoke that uses C++11 variadic templates.
PiperOrigin-RevId: 288449236
Explicitly default copy constructor in BoundSecondMatcher
Since C++11, implicit defaulting of copy constructors is deprecated for types
with user-defined copy assignment operators, so we should explicitly default the
copy constructor of BoundSecondMatcher.
PiperOrigin-RevId: 287587847
Add option (default to disabled) to make C++ type parameterized tests (TYPED_TEST_P) fail when they're not instantiated.
When an un-instantiated TYPED_TEST_P is found, a new test will be inserted that emits a suitable message. For now, that is just a notice, but the hope it to flip the bit to make it fail by default.
PiperOrigin-RevId: 286408038
Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h.
Make InvokeArgumentAdl use variadic templates to generate its overloads instead
of using pump.py syntax.
PiperOrigin-RevId: 286267615
Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h.
Make InvokeArgumentAdl use variadic templates to generate its overloads instead
of using pump.py syntax.
PiperOrigin-RevId: 286148805
Don't use fully qualified ::std types in code examples.
Having a nested user-defined 'std' namespace anywhere in a program is a minefield and shouldn't be either explicitly supported or implicitly condoned.
PiperOrigin-RevId: 285790182
This reverts commit 20b5b8ecc7a81d23b4716e22a2b35fd53379c8c6.
Reason for revert: Breaks existing applications, such as ANGLE
(angleproject.org), requires adding an extra prefix that needs to be
typed for no reason (when testing from command line) and increases the
logs' sizes by a non-trivial amount due to the very large number of
tests ANGLE runs.
Original commit message:
Add a compile time check to ensure that the parameters to TEST_P and
INSTANTIATE_TEST_SUITE_P are not empty. Some compilers already fail
in that case and, even where it works, it's likely to result in
technically invalid code by virtue of creating reserved identifiers:
https://en.cppreference.com/w/cpp/language/identifiers
First, every project is perfectly capable of adding a prefix if they
want to support such a compiler. This change penalizes every
project.
Second, using a prefix such as `_p` also results in reserved
identifiers, so this change is not really solving the problem. For that
matter, instead of generating `gtest_##prefix##...`, you can generate
`gtest_x##prefix##...` to correctly fix the issue, including when empty
prefixes are used.
This reverts commit 4c25e2b87fcb78abcfdee2739db9ed7a19754cd3.
Reason for revert: Reverting the commit that disallows empty prefixes.
Original commit message:
Remove a test case rendered obsolete by disallowing empty argument for INSTANTIATE_TEST_SUITE_P.
Remove the code that it was testing.
Empty arguments can be passed to macros per C99 and C++11 specs, which
can then be forwarded to other macros.
Visual Studio's compiler has a bug in the following situation:
#define A(x) #x
#define B(x, y) A(x)
B(, b)
In the above case, Visual Studio first expands x to nothing, then
complains that A is not invoked with the right amount of arguments.
However, x in A(x) is still one argument, even if it expands to no
preprocessing tokens. See also https://stackoverflow.com/a/7674214.
Use C++11 variadic templates for ActionHelper in gmock-generated-actions.h.
Make ActionHelper use variadic templates to generate Perform static member function specializations instead of using pump.py syntax.
PiperOrigin-RevId: 284988441
Detect when C++ parametric tests (TEST_P) are not instantiated.
When an un-instantiated TEST_P is found, a new test will be inserted that will emit a warning message.
This can be made to error with minor code edits.
In the future, that is intended to be the default.
PiperOrigin-RevId: 284901666