From 7ce92fc75aa0d4c5f772f66c4af389e8ff16445e Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 24 Feb 2010 15:51:42 +0300 Subject: [PATCH] use dynamic nodes if test was not declared in Runner.getDescription (IDEA-24469) --- .../junit2/ui/TestsPacketsReceiver.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java b/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java index c5d6f3dc6f30..1ba5da5f410a 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java @@ -21,6 +21,8 @@ package com.intellij.execution.junit2.ui; import com.intellij.execution.junit2.TestProxy; +import com.intellij.execution.junit2.info.ClassBasedInfo; +import com.intellij.execution.junit2.info.DisplayTestInfoExtractor; import com.intellij.execution.junit2.segments.InputObjectRegistry; import com.intellij.execution.junit2.segments.ObjectReader; import com.intellij.execution.junit2.states.*; @@ -46,6 +48,7 @@ import java.util.Map; public class TestsPacketsReceiver implements PacketProcessor, Disposable { public static final Map STATE_CLASSES = new HashMap(); + private Map myKnownDynamicParents; static { mapClass(PoolOfTestStates.RUNNING_INDEX, new RunningStateSetter()); @@ -121,6 +124,29 @@ public class TestsPacketsReceiver implements PacketProcessor, Disposable { public void notifyTestStart(ObjectReader reader) { myCurrentTest = reader.readObject(); + final JUnitRunningModel model = getModel(); + if (model != null && myCurrentTest.getParent() == null) { + getDynamicParent(model).addChild(myCurrentTest); + } + } + + private TestProxy getDynamicParent(JUnitRunningModel model) { + if (myKnownDynamicParents == null) { + myKnownDynamicParents = new HashMap(); + } + final String parentClass = myCurrentTest.getInfo().getComment(); + TestProxy dynamicParent = myKnownDynamicParents.get(parentClass); + if (dynamicParent == null) { + dynamicParent = new TestProxy(new ClassBasedInfo(DisplayTestInfoExtractor.FOR_CLASS){ + { + setClassName(parentClass); + } + public void readFrom(ObjectReader reader) {} + }); + myKnownDynamicParents.put(parentClass, dynamicParent); + model.getRoot().addChild(dynamicParent); + } + return dynamicParent; } public static void notifyTestResult(ObjectReader reader) {