diff --git a/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.kt b/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.kt index 6daa336268a0..92aa0b47bbeb 100644 --- a/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.kt +++ b/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.kt @@ -44,7 +44,9 @@ class RecentTestsData { entry.addSuite(suite) } else { - runConfigurationSuites.put(id, RunConfigurationEntry(suite)) + val configurationEntry = RunConfigurationEntry(suite.runConfiguration) + configurationEntry.addSuite(suite) + runConfigurationSuites.put(id, configurationEntry) } } @@ -90,30 +92,23 @@ class RecentTestsData { fun getTestsToShow(): List { val allConfigurations = runConfigurationSuites.values - val allSuites = allConfigurations.fold(arrayListOf(), { list: List, entry -> list + entry.suites }) - testsWithoutSuites.forEach { - val info = it - allSuites - .find { - it.isMyTest(info.test) - } - ?.let { - info.test.suite = it - } - } - - val testsCollector = SingleTestCollector() - allConfigurations.forEach { it.accept(testsCollector) } - val failedTests = testsCollector.tests.filter { it.failed } - + val failedTests = getFailedTests(allConfigurations) + val configsCollector = ConfigurationsCollector() allConfigurations.forEach { it.accept(configsCollector) } val passedConfigurations = configsCollector.entries.filter { !it.failed } - val entriesToShow = failedTests + passedConfigurations + testsWithoutSuites.map { it.test }.filter { it.suite != null && it.failed } + val entriesToShow = failedTests + passedConfigurations + testsWithoutSuites.map { it.test }.filter { it.failed } return entriesToShow.sortedByDescending { it.runDate } } + + private fun getFailedTests(allConfigurations: MutableCollection): List { + val testsCollector = SingleTestCollector() + allConfigurations.forEach { it.accept(testsCollector) } + val failedTests = testsCollector.tests.filter { it.failed } + return failedTests + } } diff --git a/java/execution/impl/src/com/intellij/testIntegration/RunConfigurationEntry.kt b/java/execution/impl/src/com/intellij/testIntegration/RunConfigurationEntry.kt index 86cbaafa6593..3afadf6283e4 100644 --- a/java/execution/impl/src/com/intellij/testIntegration/RunConfigurationEntry.kt +++ b/java/execution/impl/src/com/intellij/testIntegration/RunConfigurationEntry.kt @@ -100,15 +100,10 @@ class SuiteEntry(val suiteUrl: String, } -class RunConfigurationEntry(initial: SuiteEntry) : RecentTestsPopupEntry { +class RunConfigurationEntry(val runSettings: RunnerAndConfigurationSettings) : RecentTestsPopupEntry { val suites = arrayListOf() - val runSettings = initial.runConfiguration - init { - addSuite(initial) - } - override val runDate: Date get() { return suites.minBy { it.runDate }!!.runDate diff --git a/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.kt b/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.kt index 68dcadba42a2..7600a9da45dc 100644 --- a/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.kt +++ b/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.kt @@ -134,21 +134,17 @@ class SelectTestStep(title: String?, entry.accept(object : TestEntryVisitor() { override fun visitTest(test: SingleTestEntry) { - val suite = test.suite ?: return - val configuration = suite.runConfigurationEntry - if (configuration == null) { - items.add(suite) - return - } + val configuration = test.suite?.runConfigurationEntry ?: RunConfigurationEntry(test.runConfiguration) + items.add(test.suite ?: return) if (isSingleTestConfiguration(configuration)) { - items.add(suite) + items.add(test.suite ?: return) return } items.add(configuration) if (configuration.suites.size > 1) { - items.add(0, suite) + items.add(0, test.suite ?: return) } }