From 1bb598d2a79e9ebdf09d9d307b71807a225b4d8c Mon Sep 17 00:00:00 2001 From: Roman Chernyatchik Date: Tue, 1 Feb 2011 12:52:49 +0300 Subject: [PATCH] TestResults Tree | View diff action moved to platform --- .../platform-resources/src/idea/LangActions.xml | 5 +++++ .../testframework/sm/runner/SMTestProxy.java | 9 +++++++++ .../states/TestComparisionFailedState.java | 17 ++++++++++++++++- .../testframework/AbstractTestProxy.java | 9 +++++++++ .../execution/testframework/TestTreeView.java | 2 ++ .../actions/ViewAssertEqualsDiffAction.java | 16 +++++++--------- plugins/junit/src/META-INF/plugin.xml | 3 +-- .../intellij/execution/junit2/TestProxy.java | 12 +++++++++++- .../junit2/states/ComparisonFailureState.java | 3 ++- .../execution/junit2/ui/JUnitTestTreeView.java | 6 ------ 10 files changed, 62 insertions(+), 20 deletions(-) rename {plugins/junit/src/com/intellij/execution/junit2/ui => platform/testRunner/src/com/intellij/execution/testframework}/actions/ViewAssertEqualsDiffAction.java (76%) diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index 8d1074c547f9..a87fe7ed3a9f 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -786,6 +786,11 @@ + + + + + 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 b7a91e6fc3f4..6decd4ab0159 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 @@ -400,6 +400,15 @@ public class SMTestProxy extends AbstractTestProxy { return TestsPresentationUtil.getPresentableName(this); } + @Override + @Nullable + public AssertEqualsDiffViewerProvider getDiffViewerProvider() { + if (myState instanceof AssertEqualsDiffViewerProvider) { + return (AssertEqualsDiffViewerProvider)myState; + } + return null; + } + @Override public String toString() { return getPresentableName(); diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisionFailedState.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisionFailedState.java index 5ae00eff8db2..79cf7e93881c 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisionFailedState.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisionFailedState.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.testframework.sm.runner.states; +import com.intellij.execution.testframework.AbstractTestProxy; import com.intellij.execution.testframework.CompositePrintable; import com.intellij.execution.testframework.Printer; import com.intellij.execution.testframework.stacktrace.DiffHyperlink; @@ -27,7 +28,7 @@ import org.jetbrains.annotations.Nullable; /** * @author Roman.Chernyatchik */ -public class TestComparisionFailedState extends TestFailedState { +public class TestComparisionFailedState extends TestFailedState implements AbstractTestProxy.AssertEqualsDiffViewerProvider { private final String myErrorMsgPresentation; private final String myStacktracePresentation; private DiffHyperlink myHyperlink; @@ -67,4 +68,18 @@ public class TestComparisionFailedState extends TestFailedState { printer.print(CompositePrintable.NEW_LINE, ConsoleViewContentType.ERROR_OUTPUT); } } + + public void openDiff(final Project project) { + myHyperlink.openDiff(project); + } + + @Override + public String getExpecteed() { + return myHyperlink.getLeft(); + } + + @Override + public String getActual() { + return myHyperlink.getRight(); + } } diff --git a/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java b/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java index 0db0d7ed62f4..3ddc3f1d9821 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java @@ -124,5 +124,14 @@ public abstract class AbstractTestProxy extends CompositePrintable { return myExceptionMark; } + @Nullable + public AssertEqualsDiffViewerProvider getDiffViewerProvider() { + return null; + } + public interface AssertEqualsDiffViewerProvider { + void openDiff(final Project project); + String getExpecteed(); + String getActual(); + } } diff --git a/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java b/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java index c7159cef636a..66b7bb3e4b4a 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java @@ -20,6 +20,7 @@ */ package com.intellij.execution.testframework; +import com.intellij.execution.testframework.actions.ViewAssertEqualsDiffAction; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.DataProvider; @@ -92,5 +93,6 @@ public abstract class TestTreeView extends Tree implements DataProvider { }); TreeUtil.installActions(this); PopupHandler.installPopupHandler(this, IdeActions.GROUP_TESTTREE_POPUP, ActionPlaces.TESTTREE_VIEW_POPUP); + ViewAssertEqualsDiffAction.registerShortcut(this); } } \ No newline at end of file diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/actions/ViewAssertEqualsDiffAction.java b/platform/testRunner/src/com/intellij/execution/testframework/actions/ViewAssertEqualsDiffAction.java similarity index 76% rename from plugins/junit/src/com/intellij/execution/junit2/ui/actions/ViewAssertEqualsDiffAction.java rename to platform/testRunner/src/com/intellij/execution/testframework/actions/ViewAssertEqualsDiffAction.java index 56180ec82ab1..9c03a18bdc92 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/actions/ViewAssertEqualsDiffAction.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/actions/ViewAssertEqualsDiffAction.java @@ -14,11 +14,8 @@ * limitations under the License. */ -package com.intellij.execution.junit2.ui.actions; +package com.intellij.execution.testframework.actions; -import com.intellij.execution.junit2.TestProxy; -import com.intellij.execution.junit2.states.ComparisonFailureState; -import com.intellij.execution.junit2.states.TestState; import com.intellij.execution.testframework.AbstractTestProxy; import com.intellij.openapi.actionSystem.*; import org.jetbrains.annotations.NonNls; @@ -31,8 +28,10 @@ public class ViewAssertEqualsDiffAction extends AnAction { public void actionPerformed(final AnActionEvent e) { final AbstractTestProxy testProxy = AbstractTestProxy.DATA_KEY.getData(e.getDataContext()); if (testProxy != null) { - final ComparisonFailureState state = (ComparisonFailureState)((TestProxy)testProxy).getState(); - state.openDiff(PlatformDataKeys.PROJECT.getData(e.getDataContext())); + final AbstractTestProxy.AssertEqualsDiffViewerProvider diffViewerProvider = testProxy.getDiffViewerProvider(); + if (diffViewerProvider != null) { + diffViewerProvider.openDiff(PlatformDataKeys.PROJECT.getData(e.getDataContext())); + } } } @@ -45,9 +44,8 @@ public class ViewAssertEqualsDiffAction extends AnAction { } else { final AbstractTestProxy test = AbstractTestProxy.DATA_KEY.getData(dataContext); - if (test instanceof TestProxy) { - final TestState state = ((TestProxy)test).getState(); - enabled = state instanceof ComparisonFailureState; + if (test != null) { + enabled = test.getDiffViewerProvider() != null; } else { enabled = false; diff --git a/plugins/junit/src/META-INF/plugin.xml b/plugins/junit/src/META-INF/plugin.xml index b0d1d0d28407..f34d19f72bc0 100644 --- a/plugins/junit/src/META-INF/plugin.xml +++ b/plugins/junit/src/META-INF/plugin.xml @@ -39,10 +39,9 @@ - - + diff --git a/plugins/junit/src/com/intellij/execution/junit2/TestProxy.java b/plugins/junit/src/com/intellij/execution/junit2/TestProxy.java index 8aa09de31cf8..b8f65113bde3 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/TestProxy.java +++ b/plugins/junit/src/com/intellij/execution/junit2/TestProxy.java @@ -21,12 +21,14 @@ import com.intellij.execution.junit2.events.*; import com.intellij.execution.junit2.info.TestInfo; import com.intellij.execution.junit2.states.Statistics; import com.intellij.execution.junit2.states.TestState; -import com.intellij.execution.testframework.*; +import com.intellij.execution.testframework.AbstractTestProxy; +import com.intellij.execution.testframework.Filter; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.pom.Navigatable; import com.intellij.rt.execution.junit.states.PoolOfTestStates; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -268,4 +270,12 @@ public class TestProxy extends AbstractTestProxy { return false; } + @Override + @Nullable + public AssertEqualsDiffViewerProvider getDiffViewerProvider() { + if (myState instanceof AssertEqualsDiffViewerProvider) { + return (AssertEqualsDiffViewerProvider)myState; + } + return null; + } } diff --git a/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java b/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java index 789f43331b21..e41bbcabb9cb 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java +++ b/plugins/junit/src/com/intellij/execution/junit2/states/ComparisonFailureState.java @@ -17,13 +17,14 @@ package com.intellij.execution.junit2.states; import com.intellij.execution.junit2.segments.ObjectReader; +import com.intellij.execution.testframework.AbstractTestProxy; import com.intellij.execution.testframework.Printer; import com.intellij.execution.testframework.stacktrace.DiffHyperlink; import com.intellij.execution.ui.ConsoleViewContentType; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NonNls; -public class ComparisonFailureState extends FaultyState { +public class ComparisonFailureState extends FaultyState implements AbstractTestProxy.AssertEqualsDiffViewerProvider { private DiffHyperlink myHyperlink; @NonNls protected static final String EXPECTED_VALUE_MESSAGE_TEXT = "expected:<"; diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTestTreeView.java b/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTestTreeView.java index 9df5be4f9c99..334e57805087 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTestTreeView.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/JUnitTestTreeView.java @@ -17,7 +17,6 @@ package com.intellij.execution.junit2.ui; import com.intellij.execution.junit2.TestProxy; -import com.intellij.execution.junit2.ui.actions.ViewAssertEqualsDiffAction; import com.intellij.execution.testframework.TestConsoleProperties; import com.intellij.execution.testframework.TestTreeView; import org.jetbrains.annotations.NotNull; @@ -42,9 +41,4 @@ public class JUnitTestTreeView extends TestTreeView { final boolean hasFocus) { return Formatters.printTest(TestProxyClient.from(value)); } - - protected void installHandlers() { - super.installHandlers(); - ViewAssertEqualsDiffAction.registerShortcut(this); - } }