Allow macros inside of parametrized test names.
This allows doing things like TEST_P(TestFixture, MAYBE(TestName)) for nicer conditional test disabling. Upstream of cr/188748737. Tested: Added unit tests MacroNamingTest and MacroNamingTestNonParametrized.
This commit is contained in:
		
							parent
							
								
									9bee111e03
								
							
						
					
					
						commit
						cb2dd89007
					
				@ -1371,8 +1371,6 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
 | 
			
		||||
}
 | 
			
		||||
# endif  // GTEST_HAS_COMBINE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# define TEST_P(test_case_name, test_name) \
 | 
			
		||||
  class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
 | 
			
		||||
      : public test_case_name { \
 | 
			
		||||
@ -1386,8 +1384,8 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
 | 
			
		||||
              #test_case_name, \
 | 
			
		||||
              ::testing::internal::CodeLocation(\
 | 
			
		||||
                  __FILE__, __LINE__))->AddTestPattern(\
 | 
			
		||||
                      #test_case_name, \
 | 
			
		||||
                      #test_name, \
 | 
			
		||||
                      GTEST_STRINGIFY_(test_case_name), \
 | 
			
		||||
                      GTEST_STRINGIFY_(test_name), \
 | 
			
		||||
                      new ::testing::internal::TestMetaFactory< \
 | 
			
		||||
                          GTEST_TEST_CLASS_NAME_(\
 | 
			
		||||
                              test_case_name, test_name)>()); \
 | 
			
		||||
 | 
			
		||||
@ -436,8 +436,6 @@ internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
 | 
			
		||||
]]
 | 
			
		||||
# endif  // GTEST_HAS_COMBINE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# define TEST_P(test_case_name, test_name) \
 | 
			
		||||
  class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
 | 
			
		||||
      : public test_case_name { \
 | 
			
		||||
@ -451,8 +449,8 @@ internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
 | 
			
		||||
              #test_case_name, \
 | 
			
		||||
              ::testing::internal::CodeLocation(\
 | 
			
		||||
                  __FILE__, __LINE__))->AddTestPattern(\
 | 
			
		||||
                      #test_case_name, \
 | 
			
		||||
                      #test_name, \
 | 
			
		||||
                      GTEST_STRINGIFY_(test_case_name), \
 | 
			
		||||
                      GTEST_STRINGIFY_(test_name), \
 | 
			
		||||
                      new ::testing::internal::TestMetaFactory< \
 | 
			
		||||
                          GTEST_TEST_CLASS_NAME_(\
 | 
			
		||||
                              test_case_name, test_name)>()); \
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,9 @@
 | 
			
		||||
#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
 | 
			
		||||
#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
 | 
			
		||||
 | 
			
		||||
// Stringifies its argument.
 | 
			
		||||
#define GTEST_STRINGIFY_(name) #name
 | 
			
		||||
 | 
			
		||||
class ProtocolMessage;
 | 
			
		||||
namespace proto2 { class Message; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -803,6 +803,34 @@ TEST_P(NamingTest, TestsReportCorrectNamesAndParameters) {
 | 
			
		||||
 | 
			
		||||
INSTANTIATE_TEST_CASE_P(ZeroToFiveSequence, NamingTest, Range(0, 5));
 | 
			
		||||
 | 
			
		||||
// Tests that macros in test names are expanded correctly.
 | 
			
		||||
class MacroNamingTest : public TestWithParam<int> {};
 | 
			
		||||
 | 
			
		||||
#define PREFIX_WITH_FOO(test_name) Foo##test_name
 | 
			
		||||
#define PREFIX_WITH_MACRO(test_name) Macro##test_name
 | 
			
		||||
 | 
			
		||||
TEST_P(PREFIX_WITH_MACRO(NamingTest), PREFIX_WITH_FOO(SomeTestName)) {
 | 
			
		||||
  const ::testing::TestInfo* const test_info =
 | 
			
		||||
     ::testing::UnitTest::GetInstance()->current_test_info();
 | 
			
		||||
 | 
			
		||||
  EXPECT_STREQ("FortyTwo/MacroNamingTest", test_info->test_case_name());
 | 
			
		||||
  EXPECT_STREQ("FooSomeTestName", test_info->name());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
INSTANTIATE_TEST_CASE_P(FortyTwo, MacroNamingTest, Values(42));
 | 
			
		||||
 | 
			
		||||
// Tests the same thing for non-parametrized tests.
 | 
			
		||||
class MacroNamingTestNonParametrized : public ::testing::Test {};
 | 
			
		||||
 | 
			
		||||
TEST_F(PREFIX_WITH_MACRO(NamingTestNonParametrized),
 | 
			
		||||
       PREFIX_WITH_FOO(SomeTestName)) {
 | 
			
		||||
  const ::testing::TestInfo* const test_info =
 | 
			
		||||
     ::testing::UnitTest::GetInstance()->current_test_info();
 | 
			
		||||
 | 
			
		||||
  EXPECT_STREQ("MacroNamingTestNonParametrized", test_info->test_case_name());
 | 
			
		||||
  EXPECT_STREQ("FooSomeTestName", test_info->name());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Tests that user supplied custom parameter names are working correctly.
 | 
			
		||||
// Runs the test with a builtin helper method which uses PrintToString,
 | 
			
		||||
// as well as a custom function and custom functor to ensure all possible
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user