import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.TestOnly;
import java.io.File;
import java.util.*;
});
}
+ @TestOnly
+ public void waitUntilRefreshed() {
+ myUpdater.waitUntilRefreshed();
+ }
+
/**
* Can be called only from not AWT thread; to do smthg after ChangeListManager refresh, call invokeAfterUpdate
*/
import com.intellij.openapi.util.Getter;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.util.Consumer;
+import com.intellij.util.concurrency.Semaphore;
import com.intellij.util.io.storage.HeavyProcessLatch;
+import org.jetbrains.annotations.TestOnly;
import javax.swing.*;
import java.util.ArrayList;
LOG.debug("Stop finished for project: " + myProject.getName());
}
+ @TestOnly
+ public void waitUntilRefreshed() {
+ final Semaphore semaphore = new Semaphore();
+ semaphore.down();
+ synchronized (myLock) {
+ final Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ semaphore.up();
+ }
+ };
+ if (myRequestSubmitted && !myStopped) {
+ myWaitingUpdateCompletionQueue.add(runnable);
+ } else {
+ runnable.run();
+ }
+ }
+ if (!semaphore.waitFor(10000)) {
+ LOG.error("Too long VCS update");
+ }
+ }
+
public void invokeAfterUpdate(final Runnable afterUpdate, final InvokeAfterUpdateMode mode, final String title,
final Consumer<VcsDirtyScopeManager> dirtyScopeManagerFiller, final ModalityState state) {
LOG.debug("invokeAfterUpdate for project: " + myProject.getName());