svn: Refactored "SvnQuickMergeTest" - code simplified

This commit is contained in:
Konstantin Kolosovsky
2016-11-09 23:53:59 +03:00
parent c6b0c64da5
commit a01da02ddb
2 changed files with 28 additions and 57 deletions
@@ -18,7 +18,9 @@ package org.jetbrains.idea.svn;
import com.intellij.openapi.vcs.FilePath;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.integrate.LocalChangesAction;
import org.jetbrains.idea.svn.integrate.QuickMergeContentsVariants;
import org.jetbrains.idea.svn.integrate.QuickMergeInteraction;
@@ -34,10 +36,12 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
private QuickMergeContentsVariants myMergeVariant = QuickMergeContentsVariants.all;
private final boolean myReintegrateAnswer;
@Nullable private final Function.Mono<List<CommittedChangeList>> mySelectedListsProvider;
@NotNull private final List<Exception> myExceptions;
public QuickMergeTestInteraction(boolean reintegrate) {
public QuickMergeTestInteraction(boolean reintegrate, @Nullable Function.Mono<List<CommittedChangeList>> selectedListsProvider) {
myReintegrateAnswer = reintegrate;
mySelectedListsProvider = selectedListsProvider;
myExceptions = newArrayList();
}
@@ -70,13 +74,13 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
@NotNull
@Override
public QuickMergeContentsVariants getResultCode() {
return QuickMergeContentsVariants.all;
return mySelectedListsProvider != null ? QuickMergeContentsVariants.select : QuickMergeContentsVariants.all;
}
@NotNull
@Override
public List<CommittedChangeList> getSelectedLists() {
return emptyList();
return mySelectedListsProvider != null ? mySelectedListsProvider.fun(lists) : emptyList();
}
};
}
@@ -86,7 +90,7 @@ public class QuickMergeTestInteraction implements QuickMergeInteraction {
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
@NotNull MergeChecker mergeChecker,
boolean everyThingLoaded) {
return emptyList();
return mySelectedListsProvider != null ? mySelectedListsProvider.fun(list) : emptyList();
}
@NotNull
@@ -22,7 +22,6 @@ import com.intellij.openapi.vcs.VcsTestUtil;
import com.intellij.openapi.vcs.changes.Change;
import com.intellij.openapi.vcs.changes.ChangeListManager;
import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.SmartList;
@@ -41,7 +40,6 @@ import org.jetbrains.idea.svn.dialogs.WCInfo;
import org.jetbrains.idea.svn.integrate.MergeContext;
import org.jetbrains.idea.svn.integrate.QuickMerge;
import org.jetbrains.idea.svn.integrate.QuickMergeContentsVariants;
import org.jetbrains.idea.svn.mergeinfo.MergeChecker;
import org.junit.Before;
import org.junit.Test;
import org.tmatesoft.svn.core.internal.util.SVNPathUtil;
@@ -108,7 +106,7 @@ public class SvnQuickMergeTest extends Svn17TestCase {
VcsTestUtil.editFileInCommand(myProject, myBranchTree.myS1File, "edited in branch");
runInAndVerifyIgnoreOutput(myBranchRoot, "ci", "-m", "change in branch", myBranchTree.myS1File.getPath());
waitQuickMerge(myBranchUrl, new QuickMergeTestInteraction(true));
waitQuickMerge(myBranchUrl, new QuickMergeTestInteraction(true, null));
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
myChangeListManager.ensureUpToDate(false);
@@ -156,20 +154,15 @@ public class SvnQuickMergeTest extends Svn17TestCase {
// we should get exactly 2 revisions for selection (copy and change in b2)
AtomicReference<String> selectionError = new AtomicReference<>();
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) {
@NotNull
@Override
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
@NotNull MergeChecker mergeChecker,
boolean everyThingLoaded) {
if (list.size() != 4) {
selectionError.set("List size: " + list.size());
} else if (list.get(3).getNumber() != numberBefore) {
selectionError.set("wrong revision for copy statement: " + list.get(3).getNumber());
}
return new SmartList<>(list.get(2)); // get a change
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true, lists -> {
if (lists.size() != 4) {
selectionError.set("List size: " + lists.size());
}
};
else if (lists.get(3).getNumber() != numberBefore) {
selectionError.set("wrong revision for copy statement: " + lists.get(3).getNumber());
}
return new SmartList<>(lists.get(2)); // get a change
});
testInteraction.setMergeVariant(QuickMergeContentsVariants.showLatest);
waitQuickMerge(myBranchUrl, testInteraction);
@@ -232,20 +225,15 @@ public class SvnQuickMergeTest extends Svn17TestCase {
// we should get exactly 2 revisions for selection (copy and change in b2)
AtomicReference<String> selectionError = new AtomicReference<>();
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) {
@NotNull
@Override
public List<CommittedChangeList> showRecentListsForSelection(@NotNull List<CommittedChangeList> list,
@NotNull MergeChecker mergeChecker,
boolean everyThingLoaded) {
if (list.size() != 2) {
selectionError.set("List size: " + list.size());
} else if (list.get(1).getNumber() != numberBeforeCopy + 1) {
selectionError.set("wrong revision for copy statement: " + list.get(1).getNumber());
}
return new SmartList<>(list.get(0)); // get a change
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true, lists -> {
if (lists.size() != 2) {
selectionError.set("List size: " + lists.size());
}
};
else if (lists.get(1).getNumber() != numberBeforeCopy + 1) {
selectionError.set("wrong revision for copy statement: " + lists.get(1).getNumber());
}
return new SmartList<>(lists.get(0)); // get a change
});
testInteraction.setMergeVariant(QuickMergeContentsVariants.showLatest);
waitQuickMerge(myRepoUrl + "/branches/b2", testInteraction);
@@ -289,29 +277,8 @@ public class SvnQuickMergeTest extends Svn17TestCase {
Thread.sleep(10);
}
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true) {
@NotNull
@Override
public SelectMergeItemsResult selectMergeItems(@NotNull List<CommittedChangeList> lists,
@NotNull String mergeTitle,
@NotNull MergeChecker mergeChecker) {
return new SelectMergeItemsResult() {
@NotNull
@Override
public QuickMergeContentsVariants getResultCode() {
return QuickMergeContentsVariants.select;
}
@NotNull
@Override
public List<CommittedChangeList> getSelectedLists() {
return lists.stream()
.filter(list -> numberBefore + 1 == list.getNumber() || numberBefore + 2 == list.getNumber())
.collect(toList());
}
};
}
};
QuickMergeTestInteraction testInteraction = new QuickMergeTestInteraction(true, lists ->
lists.stream().filter(list -> numberBefore + 1 == list.getNumber() || numberBefore + 2 == list.getNumber()).collect(toList()));
testInteraction.setMergeVariant(QuickMergeContentsVariants.select);
waitQuickMerge(myBranchUrl, testInteraction);
@@ -362,7 +329,7 @@ public class SvnQuickMergeTest extends Svn17TestCase {
refreshSvnMappingsSynchronously();
waitQuickMerge(trunkUrl, new QuickMergeTestInteraction(false));
waitQuickMerge(trunkUrl, new QuickMergeTestInteraction(false, null));
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
myChangeListManager.ensureUpToDate(false);