Unverified Commit edadfecd authored by Akash Patel's avatar Akash Patel Committed by GitHub
Browse files

Update gtest to 1.11.0 (#1086)

Properly resolves #1083, #996.
parent 26e3b704
...@@ -55,8 +55,8 @@ class UnitTestHelper { ...@@ -55,8 +55,8 @@ class UnitTestHelper {
// name. The caller is responsible for deleting the array. // name. The caller is responsible for deleting the array.
static TestSuite const** GetSortedTestSuites() { static TestSuite const** GetSortedTestSuites() {
UnitTest& unit_test = *UnitTest::GetInstance(); UnitTest& unit_test = *UnitTest::GetInstance();
auto const** const test_suites = auto const** const test_suites = new const TestSuite*[static_cast<size_t>(
new const TestSuite*[unit_test.total_test_suite_count()]; unit_test.total_test_suite_count())];
for (int i = 0; i < unit_test.total_test_suite_count(); ++i) for (int i = 0; i < unit_test.total_test_suite_count(); ++i)
test_suites[i] = unit_test.GetTestSuite(i); test_suites[i] = unit_test.GetTestSuite(i);
...@@ -83,8 +83,8 @@ class UnitTestHelper { ...@@ -83,8 +83,8 @@ class UnitTestHelper {
// sorted by the test name. The caller is responsible for deleting the // sorted by the test name. The caller is responsible for deleting the
// array. // array.
static TestInfo const** GetSortedTests(const TestSuite* test_suite) { static TestInfo const** GetSortedTests(const TestSuite* test_suite) {
TestInfo const** const tests = TestInfo const** const tests = new const TestInfo*[static_cast<size_t>(
new const TestInfo*[test_suite->total_test_count()]; test_suite->total_test_count())];
for (int i = 0; i < test_suite->total_test_count(); ++i) for (int i = 0; i < test_suite->total_test_count(); ++i)
tests[i] = test_suite->GetTestInfo(i); tests[i] = test_suite->GetTestInfo(i);
...@@ -95,17 +95,12 @@ class UnitTestHelper { ...@@ -95,17 +95,12 @@ class UnitTestHelper {
} }
}; };
#if GTEST_HAS_TYPED_TEST
template <typename T> class TestSuiteWithCommentTest : public Test {}; template <typename T> class TestSuiteWithCommentTest : public Test {};
TYPED_TEST_SUITE(TestSuiteWithCommentTest, Types<int>); TYPED_TEST_SUITE(TestSuiteWithCommentTest, Types<int>);
TYPED_TEST(TestSuiteWithCommentTest, Dummy) {} TYPED_TEST(TestSuiteWithCommentTest, Dummy) {}
const int kTypedTestSuites = 1; const int kTypedTestSuites = 1;
const int kTypedTests = 1; const int kTypedTests = 1;
#else
const int kTypedTestSuites = 0;
const int kTypedTests = 0;
#endif // GTEST_HAS_TYPED_TEST
// We can only test the accessors that do not change value while tests run. // We can only test the accessors that do not change value while tests run.
// Since tests can be run in any order, the values the accessors that track // Since tests can be run in any order, the values the accessors that track
...@@ -123,9 +118,7 @@ TEST(ApiTest, UnitTestImmutableAccessorsWork) { ...@@ -123,9 +118,7 @@ TEST(ApiTest, UnitTestImmutableAccessorsWork) {
EXPECT_STREQ("ApiTest", test_suites[0]->name()); EXPECT_STREQ("ApiTest", test_suites[0]->name());
EXPECT_STREQ("DISABLED_Test", test_suites[1]->name()); EXPECT_STREQ("DISABLED_Test", test_suites[1]->name());
#if GTEST_HAS_TYPED_TEST
EXPECT_STREQ("TestSuiteWithCommentTest/0", test_suites[2]->name()); EXPECT_STREQ("TestSuiteWithCommentTest/0", test_suites[2]->name());
#endif // GTEST_HAS_TYPED_TEST
delete[] test_suites; delete[] test_suites;
...@@ -183,12 +176,11 @@ TEST(ApiTest, TestSuiteImmutableAccessorsWork) { ...@@ -183,12 +176,11 @@ TEST(ApiTest, TestSuiteImmutableAccessorsWork) {
delete[] tests; delete[] tests;
tests = nullptr; tests = nullptr;
#if GTEST_HAS_TYPED_TEST
test_suite = UnitTestHelper::FindTestSuite("TestSuiteWithCommentTest/0"); test_suite = UnitTestHelper::FindTestSuite("TestSuiteWithCommentTest/0");
ASSERT_TRUE(test_suite != nullptr); ASSERT_TRUE(test_suite != nullptr);
EXPECT_STREQ("TestSuiteWithCommentTest/0", test_suite->name()); EXPECT_STREQ("TestSuiteWithCommentTest/0", test_suite->name());
EXPECT_STREQ(GetTypeName<int>().c_str(), test_suite->type_param()); EXPECT_STREQ(GetTypeName<Types<int>>().c_str(), test_suite->type_param());
EXPECT_TRUE(test_suite->should_run()); EXPECT_TRUE(test_suite->should_run());
EXPECT_EQ(0, test_suite->disabled_test_count()); EXPECT_EQ(0, test_suite->disabled_test_count());
EXPECT_EQ(1, test_suite->test_to_run_count()); EXPECT_EQ(1, test_suite->test_to_run_count());
...@@ -199,11 +191,10 @@ TEST(ApiTest, TestSuiteImmutableAccessorsWork) { ...@@ -199,11 +191,10 @@ TEST(ApiTest, TestSuiteImmutableAccessorsWork) {
EXPECT_STREQ("Dummy", tests[0]->name()); EXPECT_STREQ("Dummy", tests[0]->name());
EXPECT_STREQ("TestSuiteWithCommentTest/0", tests[0]->test_suite_name()); EXPECT_STREQ("TestSuiteWithCommentTest/0", tests[0]->test_suite_name());
EXPECT_TRUE(IsNull(tests[0]->value_param())); EXPECT_TRUE(IsNull(tests[0]->value_param()));
EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param()); EXPECT_STREQ(GetTypeName<Types<int>>().c_str(), tests[0]->type_param());
EXPECT_TRUE(tests[0]->should_run()); EXPECT_TRUE(tests[0]->should_run());
delete[] tests; delete[] tests;
#endif // GTEST_HAS_TYPED_TEST
} }
TEST(ApiTest, TestSuiteDisabledAccessorsWork) { TEST(ApiTest, TestSuiteDisabledAccessorsWork) {
...@@ -263,9 +254,9 @@ class FinalSuccessChecker : public Environment { ...@@ -263,9 +254,9 @@ class FinalSuccessChecker : public Environment {
EXPECT_EQ(0, test_suites[1]->successful_test_count()); EXPECT_EQ(0, test_suites[1]->successful_test_count());
EXPECT_EQ(0, test_suites[1]->failed_test_count()); EXPECT_EQ(0, test_suites[1]->failed_test_count());
#if GTEST_HAS_TYPED_TEST
EXPECT_STREQ("TestSuiteWithCommentTest/0", test_suites[2]->name()); EXPECT_STREQ("TestSuiteWithCommentTest/0", test_suites[2]->name());
EXPECT_STREQ(GetTypeName<int>().c_str(), test_suites[2]->type_param()); EXPECT_STREQ(GetTypeName<Types<int>>().c_str(),
test_suites[2]->type_param());
EXPECT_TRUE(test_suites[2]->should_run()); EXPECT_TRUE(test_suites[2]->should_run());
EXPECT_EQ(0, test_suites[2]->disabled_test_count()); EXPECT_EQ(0, test_suites[2]->disabled_test_count());
ASSERT_EQ(1, test_suites[2]->total_test_count()); ASSERT_EQ(1, test_suites[2]->total_test_count());
...@@ -273,7 +264,6 @@ class FinalSuccessChecker : public Environment { ...@@ -273,7 +264,6 @@ class FinalSuccessChecker : public Environment {
EXPECT_EQ(0, test_suites[2]->failed_test_count()); EXPECT_EQ(0, test_suites[2]->failed_test_count());
EXPECT_TRUE(test_suites[2]->Passed()); EXPECT_TRUE(test_suites[2]->Passed());
EXPECT_FALSE(test_suites[2]->Failed()); EXPECT_FALSE(test_suites[2]->Failed());
#endif // GTEST_HAS_TYPED_TEST
const TestSuite* test_suite = UnitTestHelper::FindTestSuite("ApiTest"); const TestSuite* test_suite = UnitTestHelper::FindTestSuite("ApiTest");
const TestInfo** tests = UnitTestHelper::GetSortedTests(test_suite); const TestInfo** tests = UnitTestHelper::GetSortedTests(test_suite);
...@@ -310,20 +300,18 @@ class FinalSuccessChecker : public Environment { ...@@ -310,20 +300,18 @@ class FinalSuccessChecker : public Environment {
delete[] tests; delete[] tests;
#if GTEST_HAS_TYPED_TEST
test_suite = UnitTestHelper::FindTestSuite("TestSuiteWithCommentTest/0"); test_suite = UnitTestHelper::FindTestSuite("TestSuiteWithCommentTest/0");
tests = UnitTestHelper::GetSortedTests(test_suite); tests = UnitTestHelper::GetSortedTests(test_suite);
EXPECT_STREQ("Dummy", tests[0]->name()); EXPECT_STREQ("Dummy", tests[0]->name());
EXPECT_STREQ("TestSuiteWithCommentTest/0", tests[0]->test_suite_name()); EXPECT_STREQ("TestSuiteWithCommentTest/0", tests[0]->test_suite_name());
EXPECT_TRUE(IsNull(tests[0]->value_param())); EXPECT_TRUE(IsNull(tests[0]->value_param()));
EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param()); EXPECT_STREQ(GetTypeName<Types<int>>().c_str(), tests[0]->type_param());
EXPECT_TRUE(tests[0]->should_run()); EXPECT_TRUE(tests[0]->should_run());
EXPECT_TRUE(tests[0]->result()->Passed()); EXPECT_TRUE(tests[0]->result()->Passed());
EXPECT_EQ(0, tests[0]->result()->test_property_count()); EXPECT_EQ(0, tests[0]->result()->test_property_count());
delete[] tests; delete[] tests;
#endif // GTEST_HAS_TYPED_TEST
delete[] test_suites; delete[] test_suites;
} }
}; };
......
...@@ -43,6 +43,7 @@ import gtest_test_utils ...@@ -43,6 +43,7 @@ import gtest_test_utils
IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux' IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux'
IS_GNUKFREEBSD = os.name == 'posix' and os.uname()[0] == 'GNU/kFreeBSD'
IS_WINDOWS = os.name == 'nt' IS_WINDOWS = os.name == 'nt'
PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_help_test_') PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_help_test_')
...@@ -68,6 +69,7 @@ HELP_REGEX = re.compile( ...@@ -68,6 +69,7 @@ HELP_REGEX = re.compile(
FLAG_PREFIX + r'shuffle.*' + FLAG_PREFIX + r'shuffle.*' +
FLAG_PREFIX + r'random_seed=.*' + FLAG_PREFIX + r'random_seed=.*' +
FLAG_PREFIX + r'color=.*' + FLAG_PREFIX + r'color=.*' +
FLAG_PREFIX + r'brief.*' +
FLAG_PREFIX + r'print_time.*' + FLAG_PREFIX + r'print_time.*' +
FLAG_PREFIX + r'output=.*' + FLAG_PREFIX + r'output=.*' +
FLAG_PREFIX + r'break_on_failure.*' + FLAG_PREFIX + r'break_on_failure.*' +
...@@ -110,7 +112,7 @@ class GTestHelpTest(gtest_test_utils.TestCase): ...@@ -110,7 +112,7 @@ class GTestHelpTest(gtest_test_utils.TestCase):
self.assertEquals(0, exit_code) self.assertEquals(0, exit_code)
self.assert_(HELP_REGEX.search(output), output) self.assert_(HELP_REGEX.search(output), output)
if IS_LINUX: if IS_LINUX or IS_GNUKFREEBSD:
self.assert_(STREAM_RESULT_TO_FLAG in output, output) self.assert_(STREAM_RESULT_TO_FLAG in output, output)
else: else:
self.assert_(STREAM_RESULT_TO_FLAG not in output, output) self.assert_(STREAM_RESULT_TO_FLAG not in output, output)
......
...@@ -46,16 +46,42 @@ GTEST_LIST_TESTS_FLAG = '--gtest_list_tests' ...@@ -46,16 +46,42 @@ GTEST_LIST_TESTS_FLAG = '--gtest_list_tests'
GTEST_OUTPUT_FLAG = '--gtest_output' GTEST_OUTPUT_FLAG = '--gtest_output'
EXPECTED_XML = """<\?xml version="1.0" encoding="UTF-8"\?> EXPECTED_XML = """<\?xml version="1.0" encoding="UTF-8"\?>
<testsuites tests="2" name="AllTests"> <testsuites tests="16" name="AllTests">
<testsuite name="FooTest" tests="2"> <testsuite name="FooTest" tests="2">
<testcase name="Test1" file=".*gtest_list_output_unittest_.cc" line="43" /> <testcase name="Test1" file=".*gtest_list_output_unittest_.cc" line="43" />
<testcase name="Test2" file=".*gtest_list_output_unittest_.cc" line="45" /> <testcase name="Test2" file=".*gtest_list_output_unittest_.cc" line="45" />
</testsuite> </testsuite>
<testsuite name="FooTestFixture" tests="2">
<testcase name="Test3" file=".*gtest_list_output_unittest_.cc" line="48" />
<testcase name="Test4" file=".*gtest_list_output_unittest_.cc" line="49" />
</testsuite>
<testsuite name="TypedTest/0" tests="2">
<testcase name="Test7" type_param="int" file=".*gtest_list_output_unittest_.cc" line="60" />
<testcase name="Test8" type_param="int" file=".*gtest_list_output_unittest_.cc" line="61" />
</testsuite>
<testsuite name="TypedTest/1" tests="2">
<testcase name="Test7" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="60" />
<testcase name="Test8" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="61" />
</testsuite>
<testsuite name="Single/TypeParameterizedTestSuite/0" tests="2">
<testcase name="Test9" type_param="int" file=".*gtest_list_output_unittest_.cc" line="66" />
<testcase name="Test10" type_param="int" file=".*gtest_list_output_unittest_.cc" line="67" />
</testsuite>
<testsuite name="Single/TypeParameterizedTestSuite/1" tests="2">
<testcase name="Test9" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="66" />
<testcase name="Test10" type_param="bool" file=".*gtest_list_output_unittest_.cc" line="67" />
</testsuite>
<testsuite name="ValueParam/ValueParamTest" tests="4">
<testcase name="Test5/0" value_param="33" file=".*gtest_list_output_unittest_.cc" line="52" />
<testcase name="Test5/1" value_param="42" file=".*gtest_list_output_unittest_.cc" line="52" />
<testcase name="Test6/0" value_param="33" file=".*gtest_list_output_unittest_.cc" line="53" />
<testcase name="Test6/1" value_param="42" file=".*gtest_list_output_unittest_.cc" line="53" />
</testsuite>
</testsuites> </testsuites>
""" """
EXPECTED_JSON = """{ EXPECTED_JSON = """{
"tests": 2, "tests": 16,
"name": "AllTests", "name": "AllTests",
"testsuites": \[ "testsuites": \[
{ {
...@@ -73,6 +99,124 @@ EXPECTED_JSON = """{ ...@@ -73,6 +99,124 @@ EXPECTED_JSON = """{
"line": 45 "line": 45
} }
\] \]
},
{
"name": "FooTestFixture",
"tests": 2,
"testsuite": \[
{
"name": "Test3",
"file": ".*gtest_list_output_unittest_.cc",
"line": 48
},
{
"name": "Test4",
"file": ".*gtest_list_output_unittest_.cc",
"line": 49
}
\]
},
{
"name": "TypedTest\\\\/0",
"tests": 2,
"testsuite": \[
{
"name": "Test7",
"type_param": "int",
"file": ".*gtest_list_output_unittest_.cc",
"line": 60
},
{
"name": "Test8",
"type_param": "int",
"file": ".*gtest_list_output_unittest_.cc",
"line": 61
}
\]
},
{
"name": "TypedTest\\\\/1",
"tests": 2,
"testsuite": \[
{
"name": "Test7",
"type_param": "bool",
"file": ".*gtest_list_output_unittest_.cc",
"line": 60
},
{
"name": "Test8",
"type_param": "bool",
"file": ".*gtest_list_output_unittest_.cc",
"line": 61
}
\]
},
{
"name": "Single\\\\/TypeParameterizedTestSuite\\\\/0",
"tests": 2,
"testsuite": \[
{
"name": "Test9",
"type_param": "int",
"file": ".*gtest_list_output_unittest_.cc",
"line": 66
},
{
"name": "Test10",
"type_param": "int",
"file": ".*gtest_list_output_unittest_.cc",
"line": 67
}
\]
},
{
"name": "Single\\\\/TypeParameterizedTestSuite\\\\/1",
"tests": 2,
"testsuite": \[
{
"name": "Test9",
"type_param": "bool",
"file": ".*gtest_list_output_unittest_.cc",
"line": 66
},
{
"name": "Test10",
"type_param": "bool",
"file": ".*gtest_list_output_unittest_.cc",
"line": 67
}
\]
},
{
"name": "ValueParam\\\\/ValueParamTest",
"tests": 4,
"testsuite": \[
{
"name": "Test5\\\\/0",
"value_param": "33",
"file": ".*gtest_list_output_unittest_.cc",
"line": 52
},
{
"name": "Test5\\\\/1",
"value_param": "42",
"file": ".*gtest_list_output_unittest_.cc",
"line": 52
},
{
"name": "Test6\\\\/0",
"value_param": "33",
"file": ".*gtest_list_output_unittest_.cc",
"line": 53
},
{
"name": "Test6\\\\/1",
"value_param": "42",
"file": ".*gtest_list_output_unittest_.cc",
"line": 53
}
\]
} }
\] \]
} }
...@@ -114,8 +258,9 @@ class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase): ...@@ -114,8 +258,9 @@ class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase):
p = gtest_test_utils.Subprocess( p = gtest_test_utils.Subprocess(
command, env=environ_copy, working_dir=gtest_test_utils.GetTempDir()) command, env=environ_copy, working_dir=gtest_test_utils.GetTempDir())
self.assert_(p.exited) self.assertTrue(p.exited)
self.assertEquals(0, p.exit_code) self.assertEqual(0, p.exit_code)
self.assertTrue(os.path.isfile(file_path))
with open(file_path) as f: with open(file_path) as f:
result = f.read() result = f.read()
return result return result
...@@ -128,7 +273,7 @@ class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase): ...@@ -128,7 +273,7 @@ class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase):
for actual_line in actual_lines: for actual_line in actual_lines:
expected_line = expected_lines[line_count] expected_line = expected_lines[line_count]
expected_line_re = re.compile(expected_line.strip()) expected_line_re = re.compile(expected_line.strip())
self.assert_( self.assertTrue(
expected_line_re.match(actual_line.strip()), expected_line_re.match(actual_line.strip()),
('actual output of "%s",\n' ('actual output of "%s",\n'
'which does not match expected regex of "%s"\n' 'which does not match expected regex of "%s"\n'
......
...@@ -44,6 +44,32 @@ TEST(FooTest, Test1) {} ...@@ -44,6 +44,32 @@ TEST(FooTest, Test1) {}
TEST(FooTest, Test2) {} TEST(FooTest, Test2) {}
class FooTestFixture : public ::testing::Test {};
TEST_F(FooTestFixture, Test3) {}
TEST_F(FooTestFixture, Test4) {}
class ValueParamTest : public ::testing::TestWithParam<int> {};
TEST_P(ValueParamTest, Test5) {}
TEST_P(ValueParamTest, Test6) {}
INSTANTIATE_TEST_SUITE_P(ValueParam, ValueParamTest, ::testing::Values(33, 42));
template <typename T>
class TypedTest : public ::testing::Test {};
typedef testing::Types<int, bool> TypedTestTypes;
TYPED_TEST_SUITE(TypedTest, TypedTestTypes);
TYPED_TEST(TypedTest, Test7) {}
TYPED_TEST(TypedTest, Test8) {}
template <typename T>
class TypeParameterizedTestSuite : public ::testing::Test {};
TYPED_TEST_SUITE_P(TypeParameterizedTestSuite);
TYPED_TEST_P(TypeParameterizedTestSuite, Test9) {}
TYPED_TEST_P(TypeParameterizedTestSuite, Test10) {}
REGISTER_TYPED_TEST_SUITE_P(TypeParameterizedTestSuite, Test9, Test10);
typedef testing::Types<int, bool> TypeParameterizedTestSuiteTypes; // NOLINT
INSTANTIATE_TYPED_TEST_SUITE_P(Single, TypeParameterizedTestSuite,
TypeParameterizedTestSuiteTypes);
int main(int argc, char **argv) { int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// This file is AUTOMATICALLY GENERATED on 01/02/2019 by command // This file is AUTOMATICALLY GENERATED on 11/05/2019 by command
// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! // 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
// Regression test for gtest_pred_impl.h // Regression test for gtest_pred_impl.h
...@@ -78,9 +78,8 @@ bool PredFunction1(T1 v1) { ...@@ -78,9 +78,8 @@ bool PredFunction1(T1 v1) {
return v1 > 0; return v1 > 0;
} }
// The following two functions are needed to circumvent a bug in // The following two functions are needed because a compiler doesn't have
// gcc 2.95.3, which sometimes has problem with the above template // a context yet to know which template function must be instantiated.
// function.
bool PredFunction1Int(int v1) { bool PredFunction1Int(int v1) {
return v1 > 0; return v1 > 0;
} }
...@@ -465,9 +464,8 @@ bool PredFunction2(T1 v1, T2 v2) { ...@@ -465,9 +464,8 @@ bool PredFunction2(T1 v1, T2 v2) {
return v1 + v2 > 0; return v1 + v2 > 0;
} }
// The following two functions are needed to circumvent a bug in // The following two functions are needed because a compiler doesn't have
// gcc 2.95.3, which sometimes has problem with the above template // a context yet to know which template function must be instantiated.
// function.
bool PredFunction2Int(int v1, int v2) { bool PredFunction2Int(int v1, int v2) {
return v1 + v2 > 0; return v1 + v2 > 0;
} }
...@@ -894,9 +892,8 @@ bool PredFunction3(T1 v1, T2 v2, T3 v3) { ...@@ -894,9 +892,8 @@ bool PredFunction3(T1 v1, T2 v2, T3 v3) {
return v1 + v2 + v3 > 0; return v1 + v2 + v3 > 0;
} }
// The following two functions are needed to circumvent a bug in // The following two functions are needed because a compiler doesn't have
// gcc 2.95.3, which sometimes has problem with the above template // a context yet to know which template function must be instantiated.
// function.
bool PredFunction3Int(int v1, int v2, int v3) { bool PredFunction3Int(int v1, int v2, int v3) {
return v1 + v2 + v3 > 0; return v1 + v2 + v3 > 0;
} }
...@@ -1365,9 +1362,8 @@ bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) { ...@@ -1365,9 +1362,8 @@ bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) {
return v1 + v2 + v3 + v4 > 0; return v1 + v2 + v3 + v4 > 0;
} }
// The following two functions are needed to circumvent a bug in // The following two functions are needed because a compiler doesn't have
// gcc 2.95.3, which sometimes has problem with the above template // a context yet to know which template function must be instantiated.
// function.
bool PredFunction4Int(int v1, int v2, int v3, int v4) { bool PredFunction4Int(int v1, int v2, int v3, int v4) {
return v1 + v2 + v3 + v4 > 0; return v1 + v2 + v3 + v4 > 0;
} }
...@@ -1878,9 +1874,8 @@ bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { ...@@ -1878,9 +1874,8 @@ bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) {
return v1 + v2 + v3 + v4 + v5 > 0; return v1 + v2 + v3 + v4 + v5 > 0;
} }
// The following two functions are needed to circumvent a bug in // The following two functions are needed because a compiler doesn't have
// gcc 2.95.3, which sometimes has problem with the above template // a context yet to know which template function must be instantiated.
// function.
bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) { bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) {
return v1 + v2 + v3 + v4 + v5 > 0; return v1 + v2 + v3 + v4 + v5 > 0;
} }
......
#!/usr/bin/env bash #!/usr/bin/env python
# Copyright 2017 Google Inc.
# All Rights Reserved.
# #
# Copyright 2019 Google LLC. All Rights Reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are # modification, are permitted provided that the following conditions are
...@@ -28,22 +27,33 @@ ...@@ -28,22 +27,33 @@
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Tests Google Test's gtest skip in environment setup behavior.
set -eu This script invokes gtest_skip_in_environment_setup_test_ and verifies its
output.
"""
if [ "${TRAVIS_OS_NAME}" != linux ]; then import re
echo "Not a Linux build; skipping installation"
exit 0
fi
import gtest_test_utils
if [ "${TRAVIS_SUDO}" = "true" ]; then # Path to the gtest_skip_in_environment_setup_test binary
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | \ EXE_PATH = gtest_test_utils.GetTestExecutablePath('gtest_skip_test')
sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - OUTPUT = gtest_test_utils.Subprocess([EXE_PATH]).output
sudo apt-get update && sudo apt-get install -y bazel gcc-4.9 g++-4.9 clang-3.9
elif [ "${CXX}" = "clang++" ]; then
# Use ccache, assuming $HOME/bin is in the path, which is true in the Travis build environment. # Test.
ln -sf /usr/bin/ccache $HOME/bin/${CXX}; class SkipEntireEnvironmentTest(gtest_test_utils.TestCase):
ln -sf /usr/bin/ccache $HOME/bin/${CC};
fi def testSkipEntireEnvironmentTest(self):
self.assertIn('Skipped\nskipping single test\n', OUTPUT)
skip_fixture = 'Skipped\nskipping all tests for this fixture\n'
self.assertIsNotNone(
re.search(skip_fixture + '.*' + skip_fixture, OUTPUT, flags=re.DOTALL),
repr(OUTPUT))
self.assertNotIn('FAILED', OUTPUT)
if __name__ == '__main__':
gtest_test_utils.Main()
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
using ::testing::Test; using ::testing::Test;
TEST(SkipTest, DoesSkip) { TEST(SkipTest, DoesSkip) {
GTEST_SKIP(); GTEST_SKIP() << "skipping single test";
EXPECT_EQ(0, 1); EXPECT_EQ(0, 1);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment