Googletest export
Wire up things to support marking a type paramaterized test as allowed to be un-instantiated. PiperOrigin-RevId: 289699939
This commit is contained in:
parent
7a8591e6e4
commit
3e79d366e3
|
@ -515,8 +515,10 @@ void TypeParameterizedTestSuiteRegistry::RegisterInstantiation(
|
||||||
}
|
}
|
||||||
|
|
||||||
void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
|
void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
|
||||||
|
const auto& ignored = *GetIgnoredParameterizedTestSuites();
|
||||||
for (const auto& testcase : suites_) {
|
for (const auto& testcase : suites_) {
|
||||||
if (testcase.second.instantiated) continue;
|
if (testcase.second.instantiated) continue;
|
||||||
|
if (ignored.find(testcase.first) != ignored.end()) continue;
|
||||||
|
|
||||||
std::string message =
|
std::string message =
|
||||||
"Type paramaterized test suite " + testcase.first +
|
"Type paramaterized test suite " + testcase.first +
|
||||||
|
@ -526,7 +528,12 @@ void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
|
||||||
"Ideally, TYPED_TEST_P definitions should only ever be included as "
|
"Ideally, TYPED_TEST_P definitions should only ever be included as "
|
||||||
"part of binaries that intend to use them. (As opposed to, for "
|
"part of binaries that intend to use them. (As opposed to, for "
|
||||||
"example, being placed in a library that may be linked in to get other "
|
"example, being placed in a library that may be linked in to get other "
|
||||||
"utilities.)";
|
"utilities.)"
|
||||||
|
"\n\n"
|
||||||
|
"To suppress this error for this test suite, insert the following line "
|
||||||
|
"(in a non-header) in the namespace it is definedin in:"
|
||||||
|
"\n\n"
|
||||||
|
"GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(" + testcase.first + ");";
|
||||||
|
|
||||||
std::string full_name =
|
std::string full_name =
|
||||||
"UninstantiatedTypeParamaterizedTestSuite<" + testcase.first + ">";
|
"UninstantiatedTypeParamaterizedTestSuite<" + testcase.first + ">";
|
||||||
|
|
|
@ -996,6 +996,10 @@ GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(DetectNotInstantiatedTest);
|
||||||
Type paramaterized test suite DetectNotInstantiatedTypesTest is defined via REGISTER_TYPED_TEST_SUITE_P, but never instantiated via INSTANTIATE_TYPED_TEST_SUITE_P. None of the test cases will run.
|
Type paramaterized test suite DetectNotInstantiatedTypesTest is defined via REGISTER_TYPED_TEST_SUITE_P, but never instantiated via INSTANTIATE_TYPED_TEST_SUITE_P. None of the test cases will run.
|
||||||
|
|
||||||
Ideally, TYPED_TEST_P definitions should only ever be included as part of binaries that intend to use them. (As opposed to, for example, being placed in a library that may be linked in to get other utilities.)
|
Ideally, TYPED_TEST_P definitions should only ever be included as part of binaries that intend to use them. (As opposed to, for example, being placed in a library that may be linked in to get other utilities.)
|
||||||
|
|
||||||
|
To suppress this error for this test suite, insert the following line (in a non-header) in the namespace it is definedin in:
|
||||||
|
|
||||||
|
GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(DetectNotInstantiatedTypesTest);
|
||||||
[0;32m[ OK ] [mGoogleTestVerification.UninstantiatedTypeParamaterizedTestSuite<DetectNotInstantiatedTypesTest>
|
[0;32m[ OK ] [mGoogleTestVerification.UninstantiatedTypeParamaterizedTestSuite<DetectNotInstantiatedTypesTest>
|
||||||
[0;32m[----------] [mGlobal test environment tear-down
|
[0;32m[----------] [mGlobal test environment tear-down
|
||||||
BarEnvironment::TearDown() called.
|
BarEnvironment::TearDown() called.
|
||||||
|
|
|
@ -1088,6 +1088,16 @@ TEST_P(NotInstantiatedTest, Used) { }
|
||||||
using OtherName = NotInstantiatedTest;
|
using OtherName = NotInstantiatedTest;
|
||||||
GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(OtherName);
|
GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(OtherName);
|
||||||
TEST_P(OtherName, Used) { }
|
TEST_P(OtherName, Used) { }
|
||||||
|
|
||||||
|
// Used but not instantiated, this would fail. but...
|
||||||
|
template <typename T>
|
||||||
|
class NotInstantiatedTypeTest : public testing::Test {};
|
||||||
|
TYPED_TEST_SUITE_P(NotInstantiatedTypeTest);
|
||||||
|
// ... we mark is as allowed.
|
||||||
|
GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(NotInstantiatedTypeTest);
|
||||||
|
|
||||||
|
TYPED_TEST_P(NotInstantiatedTypeTest, Used) { }
|
||||||
|
REGISTER_TYPED_TEST_SUITE_P(NotInstantiatedTypeTest, Used);
|
||||||
} // namespace works_here
|
} // namespace works_here
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user