diff --git a/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java b/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java index 4948bf1bde36..b166528085f9 100644 --- a/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java @@ -31,6 +31,8 @@ import com.intellij.testFramework.exceptionCases.AbstractExceptionCase; import com.intellij.testFramework.fixtures.IdeaTestExecutionPolicy; import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.PeekableIterator; +import com.intellij.util.containers.PeekableIteratorWrapper; import com.intellij.util.containers.hash.HashMap; import com.intellij.util.lang.CompoundRuntimeException; import com.intellij.util.ui.UIUtil; @@ -43,6 +45,7 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Assert; +import org.junit.ComparisonFailure; import java.io.File; import java.io.FileNotFoundException; @@ -559,9 +562,20 @@ public abstract class UsefulTestCase extends TestCase { } public static void assertContainsOrdered(@NotNull Collection collection, @NotNull Collection expected) { - ArrayList copy = new ArrayList<>(collection); - copy.retainAll(expected); - assertOrderedEquals(toString(collection), copy, expected); + PeekableIterator expectedIt = new PeekableIteratorWrapper<>(expected.iterator()); + PeekableIterator actualIt = new PeekableIteratorWrapper<>(collection.iterator()); + + while (actualIt.hasNext() && expectedIt.hasNext()) { + T expectedElem = expectedIt.peek(); + T actualElem = actualIt.peek(); + if (expectedElem.equals(actualElem)) { + expectedIt.next(); + } + actualIt.next(); + } + if (expectedIt.hasNext()) { + throw new ComparisonFailure("", toString(expected), toString(collection)); + } } @SafeVarargs diff --git a/plugins/git4idea/tests/git4idea/ignore/GitIgnoredFileTest.kt b/plugins/git4idea/tests/git4idea/ignore/GitIgnoredFileTest.kt index 95dc58c65e08..2174fe6a9f31 100644 --- a/plugins/git4idea/tests/git4idea/ignore/GitIgnoredFileTest.kt +++ b/plugins/git4idea/tests/git4idea/ignore/GitIgnoredFileTest.kt @@ -4,12 +4,10 @@ package git4idea.ignore import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.encoding.EncodingProjectManager -import com.intellij.util.containers.PeekableIteratorWrapper import git4idea.GitUtil import git4idea.repo.GitRepositoryFiles.GITIGNORE import git4idea.test.GitPlatformTest import git4idea.test.createRepository -import org.junit.Assert import java.io.File const val OUT = "out" @@ -60,32 +58,7 @@ class GitIgnoredFileTest : GitPlatformTest() { val generatedGitIgnoreContent = gitIgnoreFile.readText(projectCharset) assertFalse("Generated ignore file is empty", generatedGitIgnoreContent.isBlank()) assertFalse("Generated ignore file content should be system-independent", generatedGitIgnoreContent.contains('\\')) - assertIncludesAllOrdered(generatedGitIgnoreContent.lines(), gitIgnoreExpectedContentList) - } - - private fun assertIncludesAllOrdered(actualList: List, expectedList: List) { - val expectedIt = PeekableIteratorWrapper(expectedList.iterator()) - val actualIt = PeekableIteratorWrapper(actualList.iterator()) - - while (actualIt.hasNext() && expectedIt.hasNext()) { - val expected = expectedIt.peek() - val actual = actualIt.peek() - if (expected == actual) { - expectedIt.next() - actualIt.next() - } - else { - actualIt.next() - } - } - - if(expectedIt.hasNext()){ - Assert.fail(""" - Expected: $expectedList - Actual: $actualList - Not included in the same order. - """.trimIndent()) - } + assertContainsOrdered(generatedGitIgnoreContent.lines(), gitIgnoreExpectedContentList) } private fun VirtualFile.findOrCreateDir(dirName: String) = this.findChild(dirName) ?: createChildDirectory(this, dirName)