void (@NotNull SMTestProxy.SMRootTestProxy testsRoot) { myEndTime = System.currentTimeMillis(); if (myTotalTestCount == 0) { myTotalTestCount = myStartedTestCount; myStatusLine.setFraction(1); } updateStatusLabel(true); updateIconProgress(true); myRequests.clear(); myUpdateTreeRequests.cancelAllRequests(); myTreeBuilder.updateFromRoot(); LvcsHelper.addLabel(this); if (myLastSelected == null) { selectAndNotify(myTestsRootNode); } myTestsRunning = false; if (TestConsoleProperties.SORT_BY_DURATION.value(myProperties)) { myTreeBuilder.setTestsComparator(this); } fireOnTestingFinished(); if (testsRoot.wasTerminated() && myStatusLine.getStatusColor() == ColorProgressBar.GREEN) { myStatusLine.setStatusColor(JBColor.LIGHT_GRAY); } if (testsRoot.isEmptySuite() && testsRoot.isTestsReporterAttached() && myProperties instanceof SMTRunnerConsoleProperties && ((SMTRunnerConsoleProperties)myProperties).fixEmptySuite()) { return; } final TestsUIUtil.TestResultPresentation presentation = new TestsUIUtil.TestResultPresentation(testsRoot, myStartTime > 0, null) .getPresentation(myFailedTestCount, Math.max(0, myFinishedTestCount - myFailedTestCount - myIgnoredTestCount), myTotalTestCount - myStartedTestCount, myIgnoredTestCount); UIUtil.invokeLaterIfNeeded(() -> { TestsUIUtil.notifyByBalloon(myProperties.getProject(), testsRoot, myProperties, presentation); addToHistory(testsRoot, myProperties, this); }); }