From 60efc704ae25fc1824af3b617c1902490bbc436b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 24 Apr 2015 15:17:41 +0200 Subject: [PATCH] junit/testng sm: escape names e.g. for groovy tests with special names --- .../src/com/intellij/junit4/SMTestSender.java | 33 +++++++------ .../org/testng/IDEATestNGRemoteListener.java | 46 +++++++++---------- 2 files changed, 42 insertions(+), 37 deletions(-) diff --git a/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java b/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java index 3667bb19ef89..31726a5e6c1a 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java +++ b/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java @@ -21,6 +21,7 @@ package com.intellij.junit4; import com.intellij.rt.execution.junit.ComparisonFailureData; +import jetbrains.buildServer.messages.serviceMessages.MapSerializerUtil; import jetbrains.buildServer.messages.serviceMessages.ServiceMessage; import jetbrains.buildServer.messages.serviceMessages.ServiceMessageTypes; import junit.framework.ComparisonFailure; @@ -44,6 +45,10 @@ class SMTestSender extends RunListener { private String myParamName; private boolean myIgnoreTopSuite; + private static String escapeName(String str) { + return MapSerializerUtil.escapeStr(str, MapSerializerUtil.STD_ESCAPER); + } + public void testRunStarted(Description description) throws Exception { myCurrentClassName = myIgnoreTopSuite ? description.toString() : null; System.out.println("##teamcity[enteredTheMatrix]\n"); @@ -51,10 +56,10 @@ class SMTestSender extends RunListener { public void testRunFinished(Result result) throws Exception { if (myParamName != null) { - System.out.println("##teamcity[testSuiteFinished name=\'" + myParamName + "\']\n"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myParamName) + "\']\n"); } if (myCurrentClassName != null) { - System.out.println("##teamcity[testSuiteFinished name=\'" + myCurrentClassName + "\']\n"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myCurrentClassName) + "\']\n"); } } @@ -62,32 +67,32 @@ class SMTestSender extends RunListener { final String methodName = JUnit4ReflectionUtil.getMethodName(description); final int paramStart = methodName.indexOf('['); if (paramStart < 0 && myParamName != null){ - System.out.println("##teamcity[testSuiteFinished name=\'" + myParamName + "\']"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myParamName) + "\']"); myParamName = null; } final String className = JUnit4ReflectionUtil.getClassName(description); if (!className.equals(myCurrentClassName)) { if (myCurrentClassName != null) { - System.out.println("##teamcity[testSuiteFinished name=\'" + myCurrentClassName + "\']"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myCurrentClassName) + "\']"); } myCurrentClassName = className; - System.out.println("##teamcity[testSuiteStarted name =\'" + myCurrentClassName + "\']"); + System.out.println("##teamcity[testSuiteStarted name =\'" + escapeName(myCurrentClassName) + "\']"); } if (paramStart > -1) { final String paramName = methodName.substring(paramStart, methodName.length()); if (!paramName.equals(myParamName)) { if (myParamName != null) { - System.out.println("##teamcity[testSuiteFinished name=\'" + myParamName + "\']"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myParamName) + "\']"); } myParamName = paramName; - System.out.println("##teamcity[testSuiteStarted name =\'" + myParamName + "\']"); + System.out.println("##teamcity[testSuiteStarted name =\'" + escapeName(myParamName) + "\']"); } } - System.out.println("##teamcity[testStarted name=\'" + methodName + "\']"); + System.out.println("##teamcity[testStarted name=\'" + escapeName(methodName) + "\']"); } public void testFinished(Description description) throws Exception { - System.out.println("\n##teamcity[testFinished name=\'" + JUnit4ReflectionUtil.getMethodName(description) + "\']"); + System.out.println("\n##teamcity[testFinished name=\'" + escapeName(JUnit4ReflectionUtil.getMethodName(description)) + "\']"); } public void testFailure(Failure failure) throws Exception { @@ -197,8 +202,8 @@ class SMTestSender extends RunListener { private static void sendTree(JUnit4IdeaTestRunner runner, Object description, List tests) { if (tests.isEmpty()) { final String methodName = JUnit4ReflectionUtil.getMethodName((Description)description); - System.out.println("##teamcity[suiteTreeNode name=\'" + methodName + - "\' locationHint=\'java:test://" + JUnit4ReflectionUtil.getClassName((Description)description) + "." + methodName + "\']"); + System.out.println("##teamcity[suiteTreeNode name=\'" + escapeName(methodName) + + "\' locationHint=\'java:test://" + escapeName(JUnit4ReflectionUtil.getClassName((Description)description) + "." + methodName) + "\']"); } boolean pass = false; for (Iterator iterator = tests.iterator(); iterator.hasNext(); ) { @@ -219,13 +224,13 @@ class SMTestSender extends RunListener { } } } - System.out.println("##teamcity[suiteTreeStarted name=\'" + className + - "\' locationHint=\'java:suite://" + locationHint + "\']"); + System.out.println("##teamcity[suiteTreeStarted name=\'" + escapeName(className) + + "\' locationHint=\'java:suite://" + escapeName(locationHint) + "\']"); } sendTree(runner, next, childTests); } if (pass) { - System.out.println("##teamcity[suiteTreeEnded name=\'" + JUnit4ReflectionUtil.getClassName((Description)description) + "\']"); + System.out.println("##teamcity[suiteTreeEnded name=\'" + escapeName(JUnit4ReflectionUtil.getClassName((Description)description)) + "\']"); } } diff --git a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java index 303ae5bc6125..d3222a12a684 100644 --- a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java +++ b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java @@ -1,5 +1,6 @@ package org.testng; +import jetbrains.buildServer.messages.serviceMessages.MapSerializerUtil; import jetbrains.buildServer.messages.serviceMessages.ServiceMessage; import jetbrains.buildServer.messages.serviceMessages.ServiceMessageTypes; import org.testng.internal.IResultListener; @@ -21,22 +22,26 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener private String myMethodName; private int myInvocationCount = 0; + private static String escapeName(String str) { + return MapSerializerUtil.escapeStr(str, MapSerializerUtil.STD_ESCAPER); + } + public void onConfigurationSuccess(ITestResult result) { final String className = result.getTestClass().getName(); - System.out.println("##teamcity[testSuiteStarted name=\'" + className + "\']"); + System.out.println("##teamcity[testSuiteStarted name=\'" + escapeName(className) + "\']"); final String methodName = result.getMethod().getMethodName(); - System.out.println("##teamcity[testStarted name=\'" + methodName + "\']"); + System.out.println("##teamcity[testStarted name=\'" + escapeName(methodName) + "\']"); onTestSuccess(result); - System.out.println("\n##teamcity[testSuiteFinished name=\'" + className + "\']"); + System.out.println("\n##teamcity[testSuiteFinished name=\'" + escapeName(className) + "\']"); } public void onConfigurationFailure(ITestResult result) { final String className = result.getTestClass().getName(); - System.out.println("##teamcity[testSuiteStarted name=\'" + className + "\']"); + System.out.println("##teamcity[testSuiteStarted name=\'" + escapeName(className) + "\']"); final String methodName = result.getMethod().getMethodName(); - System.out.println("##teamcity[testStarted name=\'" + methodName + "\']"); + System.out.println("##teamcity[testStarted name=\'" + escapeName(methodName) + "\']"); onTestFailure(result); - System.out.println("\n##teamcity[testSuiteFinished name=\'" + className + "\']"); + System.out.println("\n##teamcity[testSuiteFinished name=\'" + escapeName(className) + "\']"); } public void onConfigurationSkip(ITestResult itr) { @@ -44,26 +49,26 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener public void onStart(ISuite suite) { System.out.println("##teamcity[enteredTheMatrix]"); - System.out.println("##teamcity[testSuiteStarted name =\'" + suite.getName() + "\']"); + System.out.println("##teamcity[testSuiteStarted name =\'" + escapeName(suite.getName()) + "\']"); } public void onFinish(ISuite suite) { - System.out.println("##teamcity[testSuiteFinished name=\'" + suite.getName() + "\']"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(suite.getName()) + "\']"); } public void onTestStart(ITestResult result) { final String className = result.getTestClass().getName(); if (myCurrentClassName == null || !myCurrentClassName.equals(className)) { if (myCurrentClassName != null) { - System.out.println("##teamcity[testSuiteFinished name=\'" + myCurrentClassName + "\']"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myCurrentClassName) + "\']"); } - System.out.println("##teamcity[testSuiteStarted name =\'" + className + "\']"); + System.out.println("##teamcity[testSuiteStarted name =\'" + escapeName(className) + "\']"); myCurrentClassName = className; myInvocationCount = 0; } String methodName = getMethodName(result, false); - System.out.println("##teamcity[testStarted name=\'" + - methodName + "\' locationHint=\'java:test://" + className + "." + methodName + "\']"); + System.out.println("##teamcity[testStarted name=\'" + escapeName(methodName) + + "\' locationHint=\'java:test://" + escapeName(className + "." + methodName) + "\']"); } private String getMethodName(ITestResult result) { @@ -89,7 +94,7 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener } public void onTestSuccess(ITestResult result) { - System.out.println("\n##teamcity[testFinished name=\'" + getMethodName(result) + "\']"); + System.out.println("\n##teamcity[testFinished name=\'" + escapeName(getMethodName(result)) + "\']"); } public String getTrace(Throwable tr) { @@ -111,25 +116,20 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener attrs.put("details", trace); attrs.put("error", "true"); System.out.println(ServiceMessage.asString(ServiceMessageTypes.TEST_FAILED, attrs)); - System.out.println("\n##teamcity[testFinished name=\'" + methodName + "\']"); + System.out.println("\n##teamcity[testFinished name=\'" + escapeName(methodName) + "\']"); } public void onTestSkipped(ITestResult result) { - System.out.println("\n##teamcity[testFinished name=\'" + getMethodName(result) + "\']"); + System.out.println("\n##teamcity[testFinished name=\'" + escapeName(getMethodName(result)) + "\']"); } - public void onTestFailedButWithinSuccessPercentage(ITestResult result) { + public void onTestFailedButWithinSuccessPercentage(ITestResult result) {} - } - - public void onStart(ITestContext context) { - //System.out.println("##teamcity[testSuiteStarted name =\'" + context.getName() + "\']"); - } + public void onStart(ITestContext context) {} public void onFinish(ITestContext context) { if (myCurrentClassName != null) { - System.out.println("##teamcity[testSuiteFinished name=\'" + myCurrentClassName + "\']"); + System.out.println("##teamcity[testSuiteFinished name=\'" + escapeName(myCurrentClassName) + "\']"); } - //System.out.println("##teamcity[testSuiteFinished name=\'" + context.getName() + "\']"); } }