Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Brychcy2016-04-07 19:33:30 +0000
committerDani Megert2016-04-23 14:41:32 +0000
commit46137ace4a0b849bbb70ce1f9731280030e18b59 (patch)
tree6fc0c7ce489ae54eb9784bf521a2c43f7ce2421f
parent1811f5fd9cc0ee7dda0c98c89c11cd13f20e4be7 (diff)
downloadeclipse.jdt.ui-46137ace4a0b849bbb70ce1f9731280030e18b59.tar.gz
eclipse.jdt.ui-46137ace4a0b849bbb70ce1f9731280030e18b59.tar.xz
eclipse.jdt.ui-46137ace4a0b849bbb70ce1f9731280030e18b59.zip
Bug 457515 - eclipse JUnit runner hangs when @Parameters name attribute
contains a newline Change-Id: I1f9ad924f71c1e52b28b5c7818ddfaf2612847c1 Signed-off-by: Till Brychcy <register.eclipse@brychcy.de>
-rw-r--r--org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java6
-rw-r--r--org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java46
2 files changed, 49 insertions, 3 deletions
diff --git a/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java b/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java
index a161dbd21b..48a9c3b3c0 100644
--- a/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java
+++ b/org.eclipse.jdt.junit.runtime/src/org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation 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
@@ -511,7 +511,7 @@ public class RemoteTestRunner implements MessageSender, IVisitsTestTrees {
}
private String escapeComma(String s) {
- if ((s.indexOf(',') < 0) && (s.indexOf('\\') < 0))
+ if ((s.indexOf(',') < 0) && (s.indexOf('\\') < 0) && s.indexOf('\n') < 0)
return s;
StringBuffer sb= new StringBuffer(s.length()+10);
for (int i= 0; i < s.length(); i++) {
@@ -520,6 +520,8 @@ public class RemoteTestRunner implements MessageSender, IVisitsTestTrees {
sb.append("\\,"); //$NON-NLS-1$
else if (c == '\\')
sb.append("\\\\"); //$NON-NLS-1$
+ else if (c == '\n')
+ sb.append(" "); //$NON-NLS-1$
else
sb.append(c);
}
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java
index 36a12a8c11..0d35e8950a 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
+ * Copyright (c) 2006, 2016 IBM Corporation 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
@@ -274,4 +274,48 @@ public class TestRunListenerTest4 extends AbstractTestRunListenerTest {
String[] actual= runTreeTest(aTestCase, 4);
assertEqualLog(expectedTree, actual);
}
+
+ public void testParametrizedWithNewLine() throws Exception {
+ String source=
+ "package pack;\n"+
+ "\n"+
+ "import java.util.Arrays;\n"+
+ "\n"+
+ "import org.junit.Assert;\n"+
+ "import org.junit.Test;\n"+
+ "import org.junit.runner.RunWith;\n"+
+ "import org.junit.runners.Parameterized;\n"+
+ "import org.junit.runners.Parameterized.Parameter;\n"+
+ "import org.junit.runners.Parameterized.Parameters;\n"+
+ "\n" +
+ "@RunWith(Parameterized.class)\n"+
+ "public class ATestCase {\n"+
+ "\n"+
+ " @Parameters(name = \"{index}: testEven({0})\")\n"+
+ " public static Iterable<String[]> data() {\n"+
+ " return Arrays.asList(new String[][] { { \"2\" }, { \"4\\n\" } });\n"+
+ " }\n"+
+ "\n"+
+ " @Parameter\n"+
+ " public String param;\n"+
+ "\n"+
+ " @Test\n"+
+ " public void testEven() {\n"+
+ " Assert.assertEquals(0, Integer.parseInt(param.trim()) % 2);\n"+
+ " }\n"+
+ "}\n";
+ System.out.println(source);
+ IType aTestCase= createType(source, "pack", "ATestCase.java");
+
+ String[] expectedSequence= new String[] {
+ TestRunListeners.sessionAsString("ATestCase", ProgressState.COMPLETED, Result.OK, 0),
+ TestRunListeners.suiteAsString("pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 1),
+ TestRunListeners.suiteAsString("[0: testEven(2)]", ProgressState.COMPLETED, Result.OK, null, 2),
+ TestRunListeners.testCaseAsString("testEven[0: testEven(2)]", "pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 3),
+ TestRunListeners.suiteAsString("[1: testEven(4 )]", ProgressState.COMPLETED, Result.OK, null, 2),
+ TestRunListeners.testCaseAsString("testEven[1: testEven(4 )]", "pack.ATestCase", ProgressState.COMPLETED, Result.OK, null, 3),
+ };
+ String[] actual= runTreeTest(aTestCase, 6);
+ assertEqualLog(expectedSequence, actual);
+ }
}

Back to the top