Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-Andre Laperle2013-12-11 20:58:24 +0000
committerMarc-Andre Laperle2013-12-12 04:03:06 +0000
commit5428ad50015b500e6a67f2aa2abe24f55c00c2c3 (patch)
tree2730b77f11740da1e75cea425bf98aa695bbf932
parent1b42998e47009d84e265f9999f39058b145d20fa (diff)
downloadorg.eclipse.cdt-5428ad50015b500e6a67f2aa2abe24f55c00c2c3.tar.gz
org.eclipse.cdt-5428ad50015b500e6a67f2aa2abe24f55c00c2c3.tar.xz
org.eclipse.cdt-5428ad50015b500e6a67f2aa2abe24f55c00c2c3.zip
Bug 422962 - Boost Testrunner: BOOST_PARAM_TEST_CASE not working
Change-Id: I8815163c15ba9cd1c2fd0b5ba4ffe7a701fb6b3c Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com> Reviewed-on: https://git.eclipse.org/r/19679 Tested-by: Hudson CI
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostXmlLogHandler.java21
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner.test/src/org/eclipse/cdt/testsrunner/testsrunners/BoostTestCase.java34
-rw-r--r--testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestModelManager.java7
3 files changed, 56 insertions, 6 deletions
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostXmlLogHandler.java b/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostXmlLogHandler.java
index 08b40e823f6..e8c25f46148 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostXmlLogHandler.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostXmlLogHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011 Anton Gorenkov
+ * Copyright (c) 2011, 2013 Anton Gorenkov and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
*
* Contributors:
* Anton Gorenkov - initial API and implementation
+ * Marc-Andre Laperle (Ericsson)
*******************************************************************************/
package org.eclipse.cdt.testsrunner.internal.boost;
@@ -87,7 +88,14 @@ public class BoostXmlLogHandler extends DefaultHandler {
/** Current test case status. */
private ITestItem.Status testStatus;
-
+ /**
+ * Keep track of the last test case name so that we can handle
+ * parameterized test cases which have the same name
+ */
+ private String lastTestCaseName = ""; //$NON-NLS-1$
+ private static final int SAME_TEST_CASE_NAME_COUNT_START = 2;
+ private int sameTestCaseNameCount = SAME_TEST_CASE_NAME_COUNT_START;
+
BoostXmlLogHandler(ITestModelUpdater modelUpdater) {
this.modelUpdater = modelUpdater;
}
@@ -102,6 +110,15 @@ public class BoostXmlLogHandler extends DefaultHandler {
} else if (qName == XML_NODE_TEST_CASE) {
String testCaseName = attrs.getValue(XML_ATTR_TEST_CASE_NAME);
+
+ if (lastTestCaseName.equals(testCaseName)) {
+ testCaseName += " (" + sameTestCaseNameCount + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ ++sameTestCaseNameCount;
+ } else {
+ lastTestCaseName = testCaseName;
+ sameTestCaseNameCount = SAME_TEST_CASE_NAME_COUNT_START;
+ }
+
modelUpdater.enterTestCase(testCaseName);
testStatus = Status.Passed;
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.test/src/org/eclipse/cdt/testsrunner/testsrunners/BoostTestCase.java b/testsrunner/org.eclipse.cdt.testsrunner.test/src/org/eclipse/cdt/testsrunner/testsrunners/BoostTestCase.java
index 053a5ea553c..679840b0a8a 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.test/src/org/eclipse/cdt/testsrunner/testsrunners/BoostTestCase.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner.test/src/org/eclipse/cdt/testsrunner/testsrunners/BoostTestCase.java
@@ -1,12 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2011 Anton Gorenkov
+ * Copyright (c) 2011, 2013 Anton Gorenkov and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Anton Gorenkov - initial implementation
+ * Anton Gorenkov - initial implementation
+ * Marc-Andre Laperle (Ericsson)
*******************************************************************************/
package org.eclipse.cdt.testsrunner.testsrunners;
@@ -478,4 +479,33 @@ public class BoostTestCase extends BaseTestCase {
expectTestingException();
}
+ // <TestLog>
+ // <TestSuite name="MainTS">
+ // <TestCase name="test_function">
+ // </TestCase>
+ // <TestCase name="test_function">
+ // </TestCase>
+ // <TestCase name="test_function">
+ // </TestCase>
+ // <TestCase name="another_test_function">
+ // </TestCase>
+ // <TestCase name="another_test_function">
+ // </TestCase>
+ // </TestSuite>
+ // </TestLog>
+ public void testParameterizedTests() {
+ mockModelUpdater.skipCalls("setTestStatus");
+ mockModelUpdater.enterTestSuite("MainTS");
+ mockModelUpdater.enterTestCase("test_function");
+ mockModelUpdater.exitTestCase();
+ mockModelUpdater.enterTestCase("test_function (2)");
+ mockModelUpdater.exitTestCase();
+ mockModelUpdater.enterTestCase("test_function (3)");
+ mockModelUpdater.exitTestCase();
+ mockModelUpdater.enterTestCase("another_test_function");
+ mockModelUpdater.exitTestCase();
+ mockModelUpdater.enterTestCase("another_test_function (2)");
+ mockModelUpdater.exitTestCase();
+ mockModelUpdater.exitTestSuite();
+ }
}
diff --git a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestModelManager.java b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestModelManager.java
index 0db8d5af989..0a74979c9d2 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestModelManager.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner/src/org/eclipse/cdt/testsrunner/internal/model/TestModelManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011 Anton Gorenkov
+ * Copyright (c) 2011, 2013 Anton Gorenkov and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
*
* Contributors:
* Anton Gorenkov - initial API and implementation
+ * Marc-Andre Laperle (Ericsson)
*******************************************************************************/
package org.eclipse.cdt.testsrunner.internal.model;
@@ -235,7 +236,9 @@ public class TestModelManager implements ITestModelUpdater, ITestModelAccessor {
for (int childIndex = 0; childIndex < lastInsertIndex; childIndex++) {
newTestItem = checkTestItem(children.get(childIndex), name);
if (newTestItem != null) {
- children.add(lastInsertIndex, children.remove(childIndex));
+ TestItem removed = children.remove(childIndex);
+ lastInsertIndex = Math.min(lastInsertIndex, children.size());
+ children.add(lastInsertIndex, removed);
notifyAboutChildrenUpdate(currTestSuite);
break;
}

Back to the top