TestResults Tree | View diff action moved to platform

This commit is contained in:
Roman Chernyatchik
2011-02-02 19:05:45 +03:00
parent ef794ba54e
commit 1bb598d2a7
10 changed files with 62 additions and 20 deletions
@@ -786,6 +786,11 @@
<reference ref="CompareClipboardWithSelection"/>
</group>
<group>
<action class="com.intellij.execution.testframework.actions.ViewAssertEqualsDiffAction" text="View assertEquals Difference" id="openAssertEqualsDiff"/>
<separator/>
<add-to-group anchor="first" group-id="TestTreePopupMenu"/>
</group>
<!-- SM Test Runner Actions -->
<group id="SMTestRunnerTestsTree">
<separator/>
@@ -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();
@@ -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();
}
}
@@ -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();
}
}
@@ -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);
}
}
@@ -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;
+1 -2
View File
@@ -39,10 +39,9 @@
<actions>
<group>
<action class="com.intellij.execution.junit2.ui.actions.ViewAssertEqualsDiffAction" text="View assertEquals Difference" id="openAssertEqualsDiff"/>
<action class="com.intellij.execution.junit.ExcludeFromRunAction" text="Exclude from suite" id="excludeFromSuite"/>
<separator/>
<add-to-group anchor="first" group-id="TestTreePopupMenu"/>
<add-to-group relative-to-action="openAssertEqualsDiff" anchor="after" group-id="TestTreePopupMenu"/>
</group>
<group>
<separator/>
@@ -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;
}
}
@@ -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:<";
@@ -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);
}
}