diff --git a/plugins/git4idea/tests/git4idea/merge/GitMergeProviderTestBase.kt b/plugins/git4idea/tests/git4idea/merge/GitMergeProviderTestBase.kt index f8cb1f9b8d36..5ec2d46c1d0d 100644 --- a/plugins/git4idea/tests/git4idea/merge/GitMergeProviderTestBase.kt +++ b/plugins/git4idea/tests/git4idea/merge/GitMergeProviderTestBase.kt @@ -85,9 +85,16 @@ abstract class GitMergeProviderTestBase : GitMergeProviderTestCase() { `invoke conflicting operation`("A", "B") `assert all revisions loaded`("A", "B") - `assert revision GOOD, path BAD `(Side.ORIGINAL) - `assert revision GOOD, path BAD `(Side.LAST) - `assert revision GOOD, path GOOD`(Side.CURRENT) + if (gitUsingOrtMergeAlg()) { + `assert revision GOOD, path GOOD`(Side.ORIGINAL) + `assert revision GOOD, path BAD `(Side.LAST) + `assert revision GOOD, path GOOD`(Side.CURRENT) + } + else { + `assert revision GOOD, path BAD `(Side.ORIGINAL) + `assert revision GOOD, path BAD `(Side.LAST) + `assert revision GOOD, path GOOD`(Side.CURRENT) + } } fun `test deleted vs rename`() { @@ -97,8 +104,15 @@ abstract class GitMergeProviderTestBase : GitMergeProviderTestCase() { `invoke conflicting operation`("A", "B") `assert all revisions loaded`("A", "B") - `assert revision GOOD, path BAD `(Side.ORIGINAL) - `assert revision GOOD, path GOOD`(Side.LAST) - `assert revision GOOD, path BAD `(Side.CURRENT) + if (gitUsingOrtMergeAlg()) { + `assert revision GOOD, path GOOD`(Side.ORIGINAL) + `assert revision GOOD, path GOOD`(Side.LAST) + `assert revision GOOD, path BAD `(Side.CURRENT) + } + else { + `assert revision GOOD, path BAD `(Side.ORIGINAL) + `assert revision GOOD, path GOOD`(Side.LAST) + `assert revision GOOD, path BAD `(Side.CURRENT) + } } } diff --git a/plugins/git4idea/tests/git4idea/test/GitPlatformTest.kt b/plugins/git4idea/tests/git4idea/test/GitPlatformTest.kt index ed76a71d8be9..7f6c133d73b8 100644 --- a/plugins/git4idea/tests/git4idea/test/GitPlatformTest.kt +++ b/plugins/git4idea/tests/git4idea/test/GitPlatformTest.kt @@ -29,10 +29,7 @@ import git4idea.GitUtil import git4idea.GitVcs import git4idea.commands.Git import git4idea.commands.GitHandler -import git4idea.config.GitExecutableManager -import git4idea.config.GitSaveChangesPolicy -import git4idea.config.GitVcsApplicationSettings -import git4idea.config.GitVcsSettings +import git4idea.config.* import git4idea.log.GitLogProvider import git4idea.repo.GitRepository import git4idea.repo.GitRepositoryManager @@ -248,6 +245,13 @@ abstract class GitPlatformTest : VcsPlatformTest() { assertTrue("Commit dialog was not shown", vcsHelper.commitDialogWasShown()) } + /** + * There are small differences between 'recursive' (old) and 'ort' (new) merge algorithms. + */ + protected fun gitUsingOrtMergeAlg(): Boolean { + return vcs.version.isLaterOrEqual(GitVersion(2, 34, 0, 0)) + } + protected fun assertNoChanges() { changeListManager.assertNoChanges() } diff --git a/plugins/git4idea/tests/git4idea/tests/GitChangeProviderConflictTest.kt b/plugins/git4idea/tests/git4idea/tests/GitChangeProviderConflictTest.kt index 536871c631aa..48d7ce42194c 100644 --- a/plugins/git4idea/tests/git4idea/tests/GitChangeProviderConflictTest.kt +++ b/plugins/git4idea/tests/git4idea/tests/GitChangeProviderConflictTest.kt @@ -63,7 +63,12 @@ class GitChangeProviderConflictTest : GitChangeProviderTest() { modifyFileInBranches("a.txt", FileAction.RENAME, FileAction.DELETE) val newfile = projectRoot.findChild("a.txt_master_new") // renamed in master assertProviderChanges(newfile!!, FileStatus.MERGED_WITH_CONFLICTS) - assertManagerConflicts(Conflict("a.txt_master_new", Status.ADDED, Status.MODIFIED)) + if (gitUsingOrtMergeAlg()) { + assertManagerConflicts(Conflict("a.txt_master_new", Status.MODIFIED, Status.DELETED)) + } + else { + assertManagerConflicts(Conflict("a.txt_master_new", Status.ADDED, Status.MODIFIED)) + } } fun testConflictDR() { @@ -71,7 +76,12 @@ class GitChangeProviderConflictTest : GitChangeProviderTest() { // deleted in master, renamed in feature val newFile = projectRoot.findChild("a.txt_feature_new")!! assertProviderChanges(newFile, FileStatus.MERGED_WITH_CONFLICTS) - assertManagerConflicts(Conflict("a.txt_feature_new", Status.MODIFIED, Status.ADDED)) + if (gitUsingOrtMergeAlg()) { + assertManagerConflicts(Conflict("a.txt_feature_new", Status.DELETED, Status.MODIFIED)) + } + else { + assertManagerConflicts(Conflict("a.txt_feature_new", Status.MODIFIED, Status.ADDED)) + } } fun testConflictRR() {