git: fix tests with 'ort' merge algorithm

Tests are mostly affected by changes in 'Rename-Delete' conflicts:
https://github.com/git/git/commit/727c75b23f25f752810f412e936d420f5c7fee04

GitOrigin-RevId: 4d60452cdc339a2f532125783d3a98e67410f22f
This commit is contained in:
Aleksey Pivovarov
2021-11-29 18:49:33 +00:00
committed by intellij-monorepo-bot
parent 5b0200db5c
commit 10f7715893
3 changed files with 40 additions and 12 deletions
@@ -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)
}
}
}
@@ -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()
}
@@ -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() {