diff options
author | Till Brychcy | 2016-04-07 19:33:30 +0000 |
---|---|---|
committer | Dani Megert | 2016-04-23 14:41:32 +0000 |
commit | 46137ace4a0b849bbb70ce1f9731280030e18b59 (patch) | |
tree | 6fc0c7ce489ae54eb9784bf521a2c43f7ce2421f | |
parent | 1811f5fd9cc0ee7dda0c98c89c11cd13f20e4be7 (diff) | |
download | eclipse.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.java | 6 | ||||
-rw-r--r-- | org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestRunListenerTest4.java | 46 |
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); + } } |