From 10eb43465e88aff281a12090e4159e07c94459c7 Mon Sep 17 00:00:00 2001 From: xgsa Date: Thu, 28 Sep 2017 14:10:43 +0300 Subject: [PATCH] Bug 479289 - Eclipse fails to parse gtest output for parametrized tests Change-Id: Ieec10941c76a8ed5e1820ff165b1e673fbc1dd2f Signed-off-by: xgsa --- .../internal/gtest/OutputHandler.java | 4 +- .../testsrunners/GoogleTestCase.java | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/testsrunner/org.eclipse.cdt.testsrunner.gtest/src/org/eclipse/cdt/testsrunner/internal/gtest/OutputHandler.java b/testsrunner/org.eclipse.cdt.testsrunner.gtest/src/org/eclipse/cdt/testsrunner/internal/gtest/OutputHandler.java index 96d1b4803b6..948af2d6963 100644 --- a/testsrunner/org.eclipse.cdt.testsrunner.gtest/src/org/eclipse/cdt/testsrunner/internal/gtest/OutputHandler.java +++ b/testsrunner/org.eclipse.cdt.testsrunner.gtest/src/org/eclipse/cdt/testsrunner/internal/gtest/OutputHandler.java @@ -492,8 +492,8 @@ public class OutputHandler { private static final int DEFAULT_LOCATION_LINE = 1; // Common regular expression parts - static private String regexTestSuiteName = "([^,]+)"; //$NON-NLS-1$ - static private String regexParameterInstantiation = "(\\s*,\\s+where\\s+TypeParam\\s*=([^,(]+))?"; //$NON-NLS-1$ + static private String regexTestSuiteName = "([^, ]+)"; //$NON-NLS-1$ + static private String regexParameterInstantiation = "(\\s*,\\s+where\\s+TypeParam\\s*=(.+))?"; //$NON-NLS-1$ static private String regexTestName = regexTestSuiteName+"\\.([^,]+)"; //$NON-NLS-1$ static private String regexTestCount = "\\d+\\s+tests?"; //$NON-NLS-1$ static private String regexTestTime = "(\\d+)\\s+ms"; //$NON-NLS-1$ diff --git a/testsrunner/org.eclipse.cdt.testsrunner.tests/src/org/eclipse/cdt/testsrunner/testsrunners/GoogleTestCase.java b/testsrunner/org.eclipse.cdt.testsrunner.tests/src/org/eclipse/cdt/testsrunner/testsrunners/GoogleTestCase.java index 72c8184b0f5..37a29760369 100644 --- a/testsrunner/org.eclipse.cdt.testsrunner.tests/src/org/eclipse/cdt/testsrunner/testsrunners/GoogleTestCase.java +++ b/testsrunner/org.eclipse.cdt.testsrunner.tests/src/org/eclipse/cdt/testsrunner/testsrunners/GoogleTestCase.java @@ -695,4 +695,46 @@ public class GoogleTestCase extends BaseTestCase { expectTestingException(); } + + //Running main() from gtest_main.cc + //[==========] Running 1 test from 1 test case. + //[----------] Global test environment set-up. + //[----------] 2 tests from TestCaseName/0, where TypeParam = TypeStruct + //[ RUN ] TestCaseName/0.TestName + //[ OK ] TestCaseName/0.TestName (0 ms) + //[ RUN ] TestCaseName/0.AnotherTestName + //[ OK ] TestCaseName/0.AnotherTestName (1 ms) + //[----------] 2 tests from TestCaseName/0 (1 ms total) + // + //[----------] 2 tests from TestCaseName/1, where TypeParam = UT::(anonymous namespace)::CoreTag + //[ RUN ] TestCaseName/1.TestName + //[ OK ] TestCaseName/1.TestName (1 ms) + //[ RUN ] TestCaseName/1.AnotherTestName + //[ OK ] TestCaseName/1.AnotherTestName (0 ms) + //[----------] 2 tests from TestCaseName/1 (1 ms total) + // + //[----------] Global test environment tear-down + //[==========] 1 test from 1 test case ran. (0 ms total) + //[ PASSED ] 1 test. + public void testTypeParametrizedTestsWithTemplatesParsing() { + mockModelUpdater.skipCalls("setTestingTime"); + + mockModelUpdater.enterTestSuite("TestCaseName/0(TypeStruct)"); + mockModelUpdater.enterTestCase("TestName"); + mockModelUpdater.setTestStatus(ITestItem.Status.Passed); + mockModelUpdater.exitTestCase(); + mockModelUpdater.enterTestCase("AnotherTestName"); + mockModelUpdater.setTestStatus(ITestItem.Status.Passed); + mockModelUpdater.exitTestCase(); + mockModelUpdater.exitTestSuite(); + mockModelUpdater.enterTestSuite("TestCaseName/1(UT::(anonymous namespace)::CoreTag)"); + mockModelUpdater.enterTestCase("TestName"); + mockModelUpdater.setTestStatus(ITestItem.Status.Passed); + mockModelUpdater.exitTestCase(); + mockModelUpdater.enterTestCase("AnotherTestName"); + mockModelUpdater.setTestStatus(ITestItem.Status.Passed); + mockModelUpdater.exitTestCase(); + mockModelUpdater.exitTestSuite(); + } + }