From 015724f03f2c141ca6711a175a73ed02d96bbf2b Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 6 Feb 2019 18:36:32 +0100 Subject: [PATCH] tests ui: pass current test name so comparison failure is able to present it in the diff title (IDEA-206042) --- .../execution/testframework/sm/runner/SMTestProxy.java | 5 +++++ .../execution/testframework/AbstractTestProxy.java | 10 ++++++++++ .../execution/testframework/CompositePrintable.java | 10 ++++++++-- .../testframework/stacktrace/DiffHyperlink.java | 7 ++++++- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java index 0c255c43efb4..36767a6f9471 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java @@ -528,6 +528,11 @@ public class SMTestProxy extends AbstractTestProxy { setStacktraceIfNotSet(stackTrace); myErrorMessage = localizedMessage; final TestComparisionFailedState comparisionFailedState = new TestComparisionFailedState(localizedMessage, stackTrace, actualText, expectedText, expectedFilePath, actualFilePath); + DiffHyperlink hyperlink = comparisionFailedState.getHyperlink(); + if (hyperlink != null) { + hyperlink.setTestProxyName(getName()); + } + if (myState instanceof CompoundTestFailedState) { ((CompoundTestFailedState)myState).addFailure(comparisionFailedState); } diff --git a/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java b/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java index c3d567c28a88..bf6326b8c55d 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java @@ -171,6 +171,16 @@ public abstract class AbstractTestProxy extends CompositePrintable { return null; } + @Override + protected DiffHyperlink createHyperlink(String expected, + String actual, + String filePath, + final String actualFilePath, final boolean printOneLine) { + DiffHyperlink hyperlink = super.createHyperlink(expected, actual, filePath, actualFilePath, printOneLine); + hyperlink.setTestProxyName(getName()); + return hyperlink; + } + @Nullable public String getLocationUrl() { return null; diff --git a/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java b/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java index 5c41fdddc130..4747115c2937 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java @@ -344,8 +344,7 @@ public class CompositePrintable extends UserDataHolderBase implements Printable, final String firstToken = IOUtil.readString(reader); if (firstToken == null) break; if (firstToken.equals(HYPERLINK)) { - new DiffHyperlink(IOUtil.readString(reader), IOUtil.readString(reader), IOUtil.readString(reader), false) - .printOn(printer); + createHyperlink(IOUtil.readString(reader), IOUtil.readString(reader), IOUtil.readString(reader), null, false).printOn(printer); } else { ConsoleViewContentType contentType = contentTypeByNameMap.getOrDefault(firstToken, ConsoleViewContentType.NORMAL_OUTPUT); @@ -387,6 +386,13 @@ public class CompositePrintable extends UserDataHolderBase implements Printable, } } + protected DiffHyperlink createHyperlink(final String expected, + final String actual, + final String filePath, + final String actualFilePath, final boolean printOneLine) { + return new DiffHyperlink(expected, actual, filePath, actualFilePath, printOneLine); + } + private void printOutputFile(List currentPrintables) { if (myOutputFile != null && new File(myOutputFile).isFile()) { try (PrintStream printStream = new PrintStream(new FileOutputStream(new File(myOutputFile), true))) { diff --git a/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java b/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java index c77862b60c0d..29f9fe096dc7 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java @@ -43,6 +43,7 @@ public class DiffHyperlink implements Printable { protected final String myActualFilePath; private final boolean myPrintOneLine; private final HyperlinkInfo myDiffHyperlink = new DiffHyperlinkInfo(); + private String myTestProxyName; public DiffHyperlink(final String expected, final String actual, final String filePath) { @@ -68,12 +69,16 @@ public class DiffHyperlink implements Printable { myPrintOneLine = printOneLine; } + public void setTestProxyName(String name) { + myTestProxyName = name; + } + private static String normalizeSeparators(String filePath) { return filePath == null ? null : filePath.replace(File.separatorChar, '/'); } protected String getTitle() { - return ExecutionBundle.message("strings.equal.failed.dialog.title"); + return ExecutionBundle.message("strings.equal.failed.dialog.title") + (myTestProxyName != null ? " (" + myTestProxyName + ")" : ""); } public String getDiffTitle() {