From 20448d2981334eec1ccd0edd780c3ee866038ac5 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 29 Sep 2016 18:23:52 +0300 Subject: [PATCH] PY-15837: Escape "[" char in tests --- python/helpers/pycharm/tcmessages.py | 2 +- .../testRunner/env/unit/test_escaping.py | 6 ++++++ .../python/testing/PythonUnitTestingTest.java | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 python/testData/testRunner/env/unit/test_escaping.py diff --git a/python/helpers/pycharm/tcmessages.py b/python/helpers/pycharm/tcmessages.py index 0ecad874ded2..bca94607642a 100644 --- a/python/helpers/pycharm/tcmessages.py +++ b/python/helpers/pycharm/tcmessages.py @@ -2,7 +2,7 @@ import sys class TeamcityServiceMessages: - quote = {"'": "|'", "|": "||", "\n": "|n", "\r": "|r", ']': '|]'} + quote = {"'": "|'", "|": "||", "\n": "|n", "\r": "|r", ']': '|]', '[': '|['} def __init__(self, output=sys.stdout, prepend_linebreak=False): self.output = output diff --git a/python/testData/testRunner/env/unit/test_escaping.py b/python/testData/testRunner/env/unit/test_escaping.py new file mode 100644 index 000000000000..31441705e04f --- /dev/null +++ b/python/testData/testRunner/env/unit/test_escaping.py @@ -0,0 +1,6 @@ +from unittest import TestCase + + +class FooTest(TestCase): + def test_test(self): + raise Exception("\033[31mError Occurred") \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/env/python/testing/PythonUnitTestingTest.java b/python/testSrc/com/jetbrains/env/python/testing/PythonUnitTestingTest.java index 78b9cc22a072..5d8c05e0d84f 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PythonUnitTestingTest.java +++ b/python/testSrc/com/jetbrains/env/python/testing/PythonUnitTestingTest.java @@ -228,6 +228,27 @@ public final class PythonUnitTestingTest extends PyEnvTestCase { }); } + /** + * Ensure "[" in test does not break output + */ + @Test + public void testEscaping() throws Exception { + runPythonTest(new PyUnitTestProcessWithConsoleTestTask("/testRunner/env/unit", "test_escaping.py") { + + + @Override + protected void checkTestResults(@NotNull final PyUnitTestProcessRunner runner, + @NotNull final String stdout, + @NotNull final String stderr, + @NotNull final String all) { + assertEquals(1, runner.getAllTestsCount()); + assertEquals(0, runner.getPassedTestsCount()); + assertEquals(1, runner.getFailedTestsCount()); + } + }); + + } + @Test public void testClass() { runPythonTest(new PyUnitTestProcessWithConsoleTestTask("/testRunner/env/unit", "test_file.py::GoodTest") {