From 310550fcb650dadf6c25ed9dfd1141ebaa31f55c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 21 Aug 2019 21:43:08 +0200 Subject: [PATCH] test frameworks: reduce duplication of MapSerializerUtil GitOrigin-RevId: 15a5693a7815c62bdc77be6e4c512ffc00d0bd94 --- .../rt/execution/junit/MapSerializerUtil.java | 0 .../rt/testng/IDEATestNGRemoteListener.java | 3 +- .../intellij/rt/testng/MapSerializerUtil.java | 108 ------------------ 3 files changed, 2 insertions(+), 109 deletions(-) rename {plugins/junit_rt => java/java-runtime}/src/com/intellij/rt/execution/junit/MapSerializerUtil.java (100%) delete mode 100644 plugins/testng_rt/src/com/intellij/rt/testng/MapSerializerUtil.java diff --git a/plugins/junit_rt/src/com/intellij/rt/execution/junit/MapSerializerUtil.java b/java/java-runtime/src/com/intellij/rt/execution/junit/MapSerializerUtil.java similarity index 100% rename from plugins/junit_rt/src/com/intellij/rt/execution/junit/MapSerializerUtil.java rename to java/java-runtime/src/com/intellij/rt/execution/junit/MapSerializerUtil.java diff --git a/plugins/testng_rt/src/com/intellij/rt/testng/IDEATestNGRemoteListener.java b/plugins/testng_rt/src/com/intellij/rt/testng/IDEATestNGRemoteListener.java index 32c01e3329d2..4e6abf33cf26 100644 --- a/plugins/testng_rt/src/com/intellij/rt/testng/IDEATestNGRemoteListener.java +++ b/plugins/testng_rt/src/com/intellij/rt/testng/IDEATestNGRemoteListener.java @@ -2,6 +2,7 @@ package com.intellij.rt.testng; import com.intellij.rt.execution.junit.ComparisonFailureData; +import com.intellij.rt.execution.junit.MapSerializerUtil; import org.testng.*; import org.testng.annotations.Test; import org.testng.internal.ConstructorOrMethod; @@ -250,7 +251,7 @@ public class IDEATestNGRemoteListener { attrs.put("message", ""); } myPrintStream.println(); - myPrintStream.println(MapSerializerUtil.asString("testFailed", attrs)); + myPrintStream.println(MapSerializerUtil.asString(MapSerializerUtil.TEST_FAILED, attrs)); onTestFinished(result); } diff --git a/plugins/testng_rt/src/com/intellij/rt/testng/MapSerializerUtil.java b/plugins/testng_rt/src/com/intellij/rt/testng/MapSerializerUtil.java deleted file mode 100644 index e107aa145618..000000000000 --- a/plugins/testng_rt/src/com/intellij/rt/testng/MapSerializerUtil.java +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.rt.testng; - - -import java.util.Map; - -public class MapSerializerUtil { - private static final String STD_EX_SUFFIX = - "Valid property list format is (name( )*=( )*\'escaped_value\'( )*)* where escape simbol is \"|\""; - - - /** - * String escaping info provider. - */ - public interface EscapeInfoProvider { - /** - * Converts character to its representation in the final string - * @param c character to convert - * @return character representation or 0 if conversion is not applicable to that character - */ - char escape(char c); - - /** - * Escape character to use before escaped characters (before character representations generated by {@link #escape(char)} method) - * @return see above - */ - char escapeCharacter(); - } - - public static final EscapeInfoProvider STD_ESCAPER = new EscapeInfoProvider() { - public char escape(final char c) { - switch (c) { - case '\n': return 'n'; - case '\r': return 'r'; - case '\b': return 'b'; - case '\u0085': return 'x'; // next-line character - case '\u2028': return 'l'; // line-separator character - case '\u2029': return 'p'; // paragraph-separator character - case '|': return '|'; - case '\'': return '\''; - case '[': return '['; - case ']': return ']'; - default:return 0; - } - } - - public char escapeCharacter() { - return '|'; - } - }; - - /** - * Escapes characters specified by provider with '\' and specified character. - * @param str initial string - * @param p escape info provider. - * @return escaped string. - */ - public static String escapeStr(final String str, EscapeInfoProvider p) { - if (str == null) return null; - int finalCount = calcFinalEscapedStringCount(str, p); - - if (str.length() == finalCount) return str; - - char[] resultChars = new char[finalCount]; - int resultPos = 0; - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - final char escaped = p.escape(c); - if (escaped != 0) { - resultChars[resultPos++] = p.escapeCharacter(); - resultChars[resultPos++] = escaped; - } - else { - resultChars[resultPos++] = c; - } - } - - if (resultPos != finalCount) { - throw new RuntimeException("Incorrect escaping for '" + str + "'"); - } - return new String(resultChars); - } - - private static int calcFinalEscapedStringCount(final String name, final EscapeInfoProvider p) { - int result = 0; - for (int i = 0; i < name.length(); i++) { - char c = name.charAt(i); - if (p.escape(c) != 0) { - result += 2; - } - else { - result += 1; - } - } - - return result; - } - - public static String asString(final String messageName, final Map attributes) { - String text = "##teamcity[" + messageName; - for (final String attrName : attributes.keySet()) { - text += " " + attrName + "='" + escapeStr(attributes.get(attrName), STD_ESCAPER) + "'"; - } - text += "]"; - return text; - } - -}