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 ec85b930c96a..7ea429244512 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 @@ -532,6 +532,19 @@ public class SMTestProxy extends AbstractTestProxy { return filterChildren(filter, getChildren()); } + protected void addAfterLastPassed(Printable printable) { + int idx = 0; + synchronized (myNestedPrintables) { + for (Printable proxy : myNestedPrintables) { + if (proxy instanceof SMTestProxy && !((SMTestProxy)proxy).isFinal()) { + break; + } + idx++; + } + } + insert(printable, idx); + } + private static List filterChildren(@Nullable Filter filter, List allChildren) { if (filter == Filter.NO_FILTER || filter == null) { diff --git a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/OutputTest.kt b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/OutputTest.kt index dc66631ff6d9..3c52f4457de3 100644 --- a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/OutputTest.kt +++ b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/OutputTest.kt @@ -40,6 +40,26 @@ class OutputTest : BaseSMTRunnerTestCase() { assertEquals("inside test\n", printer.stdOut) } + fun testBeforeAfterFailedOrder() { + val suite = createTestProxy("parent") + val child = createTestProxy("child", suite) + + suite.addStdOutput("before test started\n", ProcessOutputTypes.STDOUT) + child.setStarted() + child.addStdOutput("inside test\n", ProcessOutputTypes.STDOUT) + child.setTestFailed("fail", null, false) + suite.addStdOutput("after test finished\n", ProcessOutputTypes.STDOUT) + + val printer = MockPrinter(true) + suite.printOn(printer) + + assertEquals("before test started\ninside test\nafter test finished\n", printer.stdOut) + printer.resetIfNecessary() + + child.printOn(printer) + assertEquals("inside test\n", printer.stdOut) + } + fun testBeforeAfterOrderWhenFlushed() { val suite = createTestProxy("parent") val child = createTestProxy("child", suite) diff --git a/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java b/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java index 10a283bd3292..274b52376ce0 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/AbstractTestProxy.java @@ -149,19 +149,6 @@ public abstract class AbstractTestProxy extends CompositePrintable { return provider == null ? Collections.emptyList() : Collections.singletonList(provider); } - protected void addAfterLastPassed(Printable printable) { - int idx = 0; - synchronized (myNestedPrintables) { - for (Printable proxy : myNestedPrintables) { - if (proxy instanceof AbstractTestProxy && !((AbstractTestProxy)proxy).isPassed()) { - break; - } - idx++; - } - } - insert(printable, idx); - } - @Nullable public DiffHyperlink getDiffViewerProvider() { return null;