From ba1b98a7d75ff01fb05d1f9dc2a043bc7f89b6c3 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Fri, 28 Oct 2016 10:14:53 +0300 Subject: [PATCH] svn: Fixed "SvnQuickMergeTest" - fixed waiting for "quick merge" to finish --- .../idea/svn/integrate/QuickMerge.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java index 5740a5e7a82d..dfb9136157a5 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/QuickMerge.java @@ -20,6 +20,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.progress.Task; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vcs.actions.BackgroundTaskGroup; +import com.intellij.util.concurrency.Semaphore; import org.jetbrains.annotations.CalledInAny; import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; @@ -43,6 +44,7 @@ public class QuickMerge extends BackgroundTaskGroup { @NotNull private final MergeContext myMergeContext; @NotNull private final QuickMergeInteraction myInteraction; + @NotNull private final Semaphore mySemaphore = new Semaphore(); public QuickMerge(@NotNull MergeContext mergeContext, @NotNull QuickMergeInteraction interaction) { super(mergeContext.getProject(), mergeContext.getTitle()); @@ -67,6 +69,18 @@ public class QuickMerge extends BackgroundTaskGroup { } } + @Override + public void waitForTasksToFinish() { + super.waitForTasksToFinish(); + mySemaphore.waitFor(); + } + + @Override + public void end() { + super.end(); + mySemaphore.up(); + } + @CalledInAny public void end(@NotNull String message, boolean isError) { LOG.info((isError ? "Error: " : "Info: ") + message); @@ -83,6 +97,7 @@ public class QuickMerge extends BackgroundTaskGroup { public void execute() { FileDocumentManager.getInstance().saveAllDocuments(); + mySemaphore.down(); runInEdt(() -> { if (areInSameHierarchy(createUrl(myMergeContext.getSourceUrl()), myMergeContext.getWcInfo().getUrl())) { end("Cannot merge from self", true); @@ -177,7 +192,13 @@ public class QuickMerge extends BackgroundTaskGroup { private Task newIntegrateTask(@NotNull String title, @NotNull MergerFactory mergerFactory) { return new SvnIntegrateChangesTask(myMergeContext.getVcs(), new WorkingCopyInfo(myMergeContext.getWcInfo().getPath(), true), mergerFactory, parseUrl(myMergeContext.getSourceUrl()), title, false, - myMergeContext.getBranchName()); + myMergeContext.getBranchName()) { + @Override + public void onFinished() { + super.onFinished(); + mySemaphore.up(); + } + }; } private boolean hasSwitchedRoots() {