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() {
|
||||
const auto& ignored = *GetIgnoredParameterizedTestSuites();
|
||||
for (const auto& testcase : suites_) {
|
||||
if (testcase.second.instantiated) continue;
|
||||
if (ignored.find(testcase.first) != ignored.end()) continue;
|
||||
|
||||
std::string message =
|
||||
"Type paramaterized test suite " + testcase.first +
|
||||
@ -526,7 +528,12 @@ void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
|
||||
"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.)";
|
||||
"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 =
|
||||
"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.
|
||||
|
||||
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[----------] [mGlobal test environment tear-down
|
||||
BarEnvironment::TearDown() called.
|
||||
|
@ -1088,6 +1088,16 @@ TEST_P(NotInstantiatedTest, Used) { }
|
||||
using OtherName = NotInstantiatedTest;
|
||||
GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST(OtherName);
|
||||
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
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user