From 2afb61710ceecdbc09730be6bceb57b2dcdb08a3 Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Wed, 15 Jan 2025 14:18:13 +0100 Subject: [PATCH] [java-tests] IDEA-169282 IJ-CR-152163 Unit test elapsed time should be a wall time from start to end for Gradle, TestNG, JUnit - fix IDEA-365756, terminated case GitOrigin-RevId: 6c2064a5785b97a85e41ab5a9e5b8dbc3dbce80e --- .../testframework/JavaSMTRunnerTestTreeView.java | 3 ++- .../testframework/sm/runner/SMTestProxy.java | 2 +- .../testframework/sm/runner/SMTestProxyTest.java | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/testframework/JavaSMTRunnerTestTreeView.java b/java/execution/impl/src/com/intellij/execution/testframework/JavaSMTRunnerTestTreeView.java index 624eb64eb710..34d59f644837 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/JavaSMTRunnerTestTreeView.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/JavaSMTRunnerTestTreeView.java @@ -132,7 +132,8 @@ public class JavaSMTRunnerTestTreeView extends SMTRunnerTestTreeView implements SMTestProxy test = getSelectedTest(location); if (test == null || test.isLeaf() || test.getDurationStrategy() != TestDurationStrategy.AUTOMATIC || - test.getEndTime() == null || test.getStartTime() == null) { + test.getEndTime() == null || test.getStartTime() == null || + test.getEndTime() <= test.getStartTime()) { return null; } 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 3963e09f1aa5..f2096240bd3c 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 @@ -883,7 +883,7 @@ public class SMTestProxy extends AbstractTestProxy implements Navigatable { if (myState.isFinal()) { return; } - if (myEndTime != null) { + if (myEndTime == null) { myEndTime = endTime; } myState = TerminatedState.INSTANCE; diff --git a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/SMTestProxyTest.java b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/SMTestProxyTest.java index 804776263eb9..f3063676e522 100644 --- a/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/SMTestProxyTest.java +++ b/platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/SMTestProxyTest.java @@ -1154,6 +1154,22 @@ public class SMTestProxyTest extends BaseSMTRunnerTestCase { assertTrue(root.getEndTime() - root.getStartTime() != root.getDuration()); } + public void testDisplayOwnTimeTerminated() { + SMTestProxy root = createSuiteProxy("root"); + SMTestProxy child1 = createTestProxy("child1", root); + SMTestProxy child2 = createTestProxy("child12", root); + + root.setStarted(); + + child1.setStarted(); + + root.setTerminated(); + + assertNotNull(root.getEndTime()); + assertNotNull(child1.getEndTime()); + assertNotNull(child2.getEndTime()); + } + private static void assertDisplayTimeEqualsToSumOfChildren(@NotNull SMTestProxy node) { List children = node.collectChildren(new Filter<>() { @Override