diff --git a/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java b/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java index 107bc1453a1a..7b34841e7d3e 100644 --- a/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java +++ b/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java @@ -25,10 +25,9 @@ import java.util.*; import static com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude.*; import static com.intellij.testIntegration.TestInfo.select; -import static com.intellij.testIntegration.TestInfo.selectNot; public class RecentTestsData { - private static Comparator TEST_BY_PATH_COMPARATOR = new Comparator() { + private static Comparator BY_PATH_COMPARATOR = new Comparator() { @Override public int compare(TestInfo o1, TestInfo o2) { String path1 = VirtualFileManager.extractPath(o1.getUrl()); @@ -97,27 +96,39 @@ public class RecentTestsData { public List calculateTestList() { distributeUnmatchedTests(); - - List suites = ContainerUtil.newArrayList(mySuites.values()); - Collections.sort(suites, TEST_BY_PATH_COMPARATOR); - Collections.sort(myTestsWithoutSuites, TEST_BY_PATH_COMPARATOR); - - Collections.sort(suites, SUITE_BY_RECENT_COMPARATOR); - Collections.sort(myTestsWithoutSuites, TEST_BY_RECENT_COMPARATOR); - List result = ContainerUtil.newArrayList(); - - fillWithSuites(result, select(suites, ERROR_INDEX)); - fillWithTests(result, select(myTestsWithoutSuites, ERROR_INDEX)); - - fillWithSuites(result, selectNot(suites, ERROR_INDEX, COMPLETE_INDEX, PASSED_INDEX)); - fillWithTests(result, selectNot(myTestsWithoutSuites, COMPLETE_INDEX, PASSED_INDEX)); - - fillWithSuites(result, select(suites, COMPLETE_INDEX, PASSED_INDEX)); - fillWithTests(result, select(myTestsWithoutSuites, COMPLETE_INDEX, PASSED_INDEX)); - + fillWithTests(result, ERROR_INDEX, FAILED_INDEX); + fillWithTests(result, COMPLETE_INDEX, PASSED_INDEX, IGNORED_INDEX); return result; } + + private void fillWithTests(List result, TestStateInfo.Magnitude... magnitudes) { + List suites = ContainerUtil.newArrayList(mySuites.values()); + + List failedSuites = select(suites, magnitudes); + List failedTests = select(myTestsWithoutSuites, magnitudes); + + sortByPath(failedSuites); + sortByPath(failedTests); + + sortSuitesByRecent(failedSuites); + sortTestsByRecent(failedTests); + + fillWithSuites(result, failedSuites); + fillWithTests(result, failedTests); + } + + private static void sortSuitesByRecent(List suites) { + Collections.sort(suites, SUITE_BY_RECENT_COMPARATOR); + } + + private static void sortTestsByRecent(List tests) { + Collections.sort(tests, TEST_BY_RECENT_COMPARATOR); + } + + private static void sortByPath(List list) { + Collections.sort(list, BY_PATH_COMPARATOR); + } private static void fillWithTests(List result, List tests) { for (TestInfo info : tests) { @@ -138,7 +149,7 @@ public class RecentTestsData { Set allTests = suite.getTests(); List sameMagnitudeTests = suite.getTests(suiteMagnitude); - if (sameMagnitudeTests.size() == allTests.size()) { + if (sameMagnitudeTests.size() == allTests.size() || suite.getMagnitude() == IGNORED_INDEX) { result.add(suite.getUrl()); } else { diff --git a/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.java b/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.java index 0f0d458249f1..e56bedd8fea8 100644 --- a/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.java +++ b/java/execution/impl/src/com/intellij/testIntegration/SelectTestStep.java @@ -27,7 +27,6 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.List; import java.util.Map; -import java.util.Set; public class SelectTestStep extends BaseListPopupStep { private final Map myRecords; @@ -84,16 +83,4 @@ public class SelectTestStep extends BaseListPopupStep { myRunner.run(location); return null; } - - private static class TestGroup { - public Set failedTests; - public Set passedTests; - public Set otherTests; - - public TestGroup(Set failedTests, Set passedTests, Set otherTests) { - this.failedTests = failedTests; - this.passedTests = passedTests; - this.otherTests = otherTests; - } - } } diff --git a/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt b/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt index ab1a44627d91..6ec778ff886d 100644 --- a/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt +++ b/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.testIntegration.RecentTestRunner import com.intellij.testIntegration.SelectTestStep import org.assertj.core.api.Assertions.assertThat +import org.junit.Ignore import org.junit.Test import org.mockito.Matchers import org.mockito.Mockito.`when` @@ -42,13 +43,23 @@ class RecentTestsStepTest { private val map: MutableMap = hashMapOf() fun addSuite(name: String, pass: Boolean, date: Date = Date(0)) { - val record = if (pass) passed(date) else failed(date) + val magnitude = if (pass) TestStateInfo.Magnitude.PASSED_INDEX else TestStateInfo.Magnitude.FAILED_INDEX + addSuite(name, magnitude, date) + } + + fun addSuite(name: String, magnitude: TestStateInfo.Magnitude, date: Date = Date(0)) { + val record = TestStateStorage.Record(magnitude.value, date) map.put("java:suite://$name", record) } + + fun addTest(name: String, magnitude: TestStateInfo.Magnitude, date: Date = Date(0)) { + val record = TestStateStorage.Record(magnitude.value, date) + map.put("java:test://$name", record) + } fun addTest(name: String, pass: Boolean, date: Date = Date(0)) { - val record = if (pass) passed(date) else failed(date) - map.put("java:test://$name", record) + val magnitude = if (pass) TestStateInfo.Magnitude.PASSED_INDEX else TestStateInfo.Magnitude.FAILED_INDEX + addTest(name, magnitude, date) } fun getMap() = map @@ -84,6 +95,19 @@ class RecentTestsStepTest { assertThat(values).isEqualTo(listOf("ASTest", "ASTest.bbbb", "ASTest.cccc", "ASTest.aaaa")) } + @Test + fun `show ignored`() { + val storage = TestStorage() + storage.addSuite("ASTest", TestStateInfo.Magnitude.IGNORED_INDEX) + storage.addTest("ASTest.ignored", TestStateInfo.Magnitude.IGNORED_INDEX) + storage.addTest("ASTest.passed", pass = true) + + val step = SelectTestStep(storage.getMap(), runner) + val values = step.values.map { VirtualFileManager.extractPath(it) } + + assertThat(values).isEqualTo(listOf("ASTest")) + } + @Test fun `when suite passed - show only suite`() { val map: MutableMap = hashMapOf() @@ -137,6 +161,7 @@ class RecentTestsStepTest { assertThat(step.values).isEqualTo(expected) } + @Ignore @Test fun `do not show urls without location`() { val storage = TestStorage()