lst: fix tests - sync changes with CLM

follow-up: 0279348396
This commit is contained in:
Aleksey Pivovarov
2018-02-07 20:31:22 +03:00
parent be53adf938
commit 96d70151bb
2 changed files with 51 additions and 29 deletions
@@ -29,7 +29,8 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.fileTypes.PlainTextFileType
import com.intellij.openapi.util.Comparing
import com.intellij.openapi.util.text.StringUtil
import com.intellij.openapi.vcs.changes.LocalChangeListImpl
import com.intellij.openapi.vcs.changes.ChangeListManagerImpl
import com.intellij.openapi.vcs.changes.LocalChangeList
import com.intellij.openapi.vcs.ex.*
import com.intellij.openapi.vcs.ex.LineStatusTracker.Mode
import com.intellij.openapi.vfs.VirtualFile
@@ -84,6 +85,7 @@ abstract class BaseLineStatusTrackerTestCase : LightPlatformTestCase() {
task(testHelper)
testHelper.verify()
testHelper.destroy()
}
finally {
tracker.release()
@@ -97,6 +99,8 @@ abstract class BaseLineStatusTrackerTestCase : LightPlatformTestCase() {
val vcsDocument: Document = tracker.vcsDocument
private val documentTracker = tracker.getDocumentTrackerInTestMode()
open fun destroy() {
}
fun assertHelperContentIs(expected: String, helper: PartialLocalLineStatusTracker.PartialCommitHelper) {
assertEquals(parseInput(expected), helper.content)
@@ -370,64 +374,82 @@ abstract class BaseLineStatusTrackerTestCase : LightPlatformTestCase() {
}
protected class PartialTest(val partialTracker: PartialLocalLineStatusTracker) : Test(partialTracker) {
var defaultList: String = "Default"
val changelists = mutableSetOf(defaultList)
private val clm = ChangeListManagerImpl.getInstanceImpl(getProject())
init {
partialTracker.initChangeTracking(defaultList, changelists.toList())
resetChangelists()
partialTracker.initChangeTracking(defaultChangeListIds(), changeListIds())
}
override fun destroy() {
resetChangelists()
}
private fun resetChangelists() {
clm.addChangeList(LocalChangeList.DEFAULT_NAME, null)
clm.setDefaultChangeList(LocalChangeList.DEFAULT_NAME)
for (changeListName in changeListNames()) {
if (changeListName != LocalChangeList.DEFAULT_NAME) clm.removeChangeList(changeListName)
}
}
fun assertAffectedChangelists(vararg expected: String) {
assertSameElements(partialTracker.affectedChangeListsIds, expected.toList())
assertSameElements(partialTracker.affectedChangeListsIds, expected.toListId())
}
fun Range.assertChangelist(list: String) {
val localRange = this as PartialLocalLineStatusTracker.LocalRange
assertEquals(localRange.changelistId, list)
assertEquals(localRange.changelistId, list.toListId())
}
fun createChangelist(list: String) {
assertDoesntContain(changelists, list)
changelists.add(list)
assertDoesntContain(changeListNames(), list)
clm.addChangeList(list, null)
}
fun removeChangelist(list: String) {
assertFalse(defaultList == list)
assertContainsElements(changelists, list)
partialTracker.changeListRemoved(list)
changelists.remove(list)
assertContainsElements(changeListNames(), list)
partialTracker.changeListRemoved(list.toListId())
clm.removeChangeList(list)
}
fun setDefaultChangelist(list: String) {
changelists.add(list)
partialTracker.defaultListChanged(defaultList, list)
defaultList = list
clm.addChangeList(list, null)
partialTracker.defaultListChanged(defaultChangeListIds(), list.toListId())
clm.setDefaultChangeList(list)
}
fun moveChanges(fromList: String, toList: String) {
assertContainsElements(changelists, fromList)
assertContainsElements(changelists, toList)
partialTracker.moveChanges(fromList, toList)
assertContainsElements(changeListNames(), fromList)
assertContainsElements(changeListNames(), toList)
partialTracker.moveChanges(fromList.toListId(), toList.toListId())
}
fun moveAllChangesTo(toList: String) {
assertContainsElements(changelists, toList)
partialTracker.moveChangesTo(toList)
assertContainsElements(changeListNames(), toList)
partialTracker.moveChangesTo(toList.toListId())
}
fun Range.moveTo(list: String) {
val fakeChangelist = LocalChangeListImpl.createEmptyChangeListImpl(getProject(), list, list)
partialTracker.moveToChangelist(this, fakeChangelist)
val changeList = clm.addChangeList(list, null)
partialTracker.moveToChangelist(this, changeList)
}
fun moveChangesTo(lines: BitSet, list: String) {
val fakeChangelist = LocalChangeListImpl.createEmptyChangeListImpl(getProject(), list, list)
partialTracker.moveToChangelist(lines, fakeChangelist)
val changeList = clm.addChangeList(list, null)
partialTracker.moveToChangelist(lines, changeList)
}
fun String.toListId(): String = clm.changeLists.find { it.name == this }!!.id
private fun Array<out String>.toListId() = this.map { it.toListId() }
private fun changeListIds() = clm.changeLists.map { it.id }
private fun changeListNames() = clm.changeLists.map { it.name }
private fun defaultChangeListIds() = clm.defaultChangeList.id
}
companion object {
@@ -205,7 +205,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
assertBaseTextContentIs("A_B_C_D_E_F_G_H_")
assertAffectedChangelists("Default", "Test")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Test")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Test".toListId())
helper.applyChanges()
assertHelperContentIs("A_B_C_E_F_G_N_H_", helper)
@@ -228,7 +228,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
assertBaseTextContentIs("A_B_C_D_E_F_G_H_")
assertAffectedChangelists("Default", "Test")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default".toListId())
helper.applyChanges()
assertHelperContentIs("A_B1_C_D_E_F_M_G_H_", helper)
@@ -251,7 +251,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
assertBaseTextContentIs("A_B_C_D_E_F_G_H_")
assertAffectedChangelists("Default", "Test")
val helper = partialTracker.handlePartialCommit(Side.RIGHT, "Test")
val helper = partialTracker.handlePartialCommit(Side.RIGHT, "Test".toListId())
helper.applyChanges()
assertHelperContentIs("A_B1_C_D_E_F_M_G_H_", helper)
@@ -278,7 +278,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
runCommand {
"B1_".replace("X_Y_Z_")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default".toListId())
helper.applyChanges()
assertHelperContentIs("A_X_Y_Z_C_D_E_F_M_G_H_", helper)
@@ -307,7 +307,7 @@ class PartialLineStatusTrackerTest : BaseLineStatusTrackerTestCase() {
runCommand {
"B1_".replace("X_Y_Z_")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default")
val helper = partialTracker.handlePartialCommit(Side.LEFT, "Default".toListId())
"N".replace("N2")
"M".replace("M2")