IDEA-178428 Support unescaping JSON strings in Analyze stacktrace

This commit is contained in:
peter
2018-01-05 21:15:06 +01:00
parent bd49d9f065
commit 1e7a28353a
2 changed files with 13 additions and 1 deletions
@@ -311,7 +311,8 @@ public class UnscrambleDialog extends DialogWrapper {
public static String normalizeText(@NonNls String text) {
StringBuilder builder = new StringBuilder(text.length());
text = text.replaceAll("(\\S[ \\t\\x0B\\f\\r]+)(at\\s+)", "$1\n$2");
text = StringUtil.convertLineSeparators(StringUtil.unescapeStringCharacters(text))
.replaceAll("(\\S[ \\t\\x0B\\f\\r]+)(at\\s+)", "$1\n$2");
String[] lines = text.split("\n");
boolean first = true;
@@ -198,6 +198,17 @@ nid=0x898 runnable [0x4424f000]
assert ThreadDumpParser.parse(UnscrambleDialog.normalizeText(text)).size() == 2
}
void testJsonEscapes() {
doTest '''\
"error": "java.lang.RuntimeException: Error creating table\\n\\tat org.kablambda.aws.dynamodb.DBImpl.createTable(DBImpl.java:63)\\n\\tat org.kablambda.aws.handler.InstallHandler.lambda$new$1(InstallHandler.java:16)\\n\\tat org.kablambda.aws.handler.PathHandler.handle(PathHandler.java:26)\\n\\tat
''', '''\
"error": "java.lang.RuntimeException: Error creating table
\tat org.kablambda.aws.dynamodb.DBImpl.createTable(DBImpl.java:63)
\tat org.kablambda.aws.handler.InstallHandler.lambda$new$1(InstallHandler.java:16)
\tat org.kablambda.aws.handler.PathHandler.handle(PathHandler.java:26)
\tat'''
}
private static void doTest(@NonNls String stackTrace, @NonNls String expected) {
String normalized = UnscrambleDialog.normalizeText(stackTrace)
assertEquals(expected, normalized)