diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java index d0fe428c000c..d4d77692d8ce 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java @@ -196,9 +196,15 @@ public abstract class LightQuickFixTestCase extends LightDaemonAnalyzerTestCase throw new UncheckedIOException(e); } }); - ReadonlyStatusHandler.getInstance(file.getProject()).setReadOnlyStatusClearedByRequest(true); - ShowIntentionActionsHandler.chooseActionAndInvoke(file, getEditor(), action, action.getText()); - UIUtil.dispatchAllInvocationEvents(); + ReadonlyStatusHandler handler = ReadonlyStatusHandler.getInstance(file.getProject()); + handler.setClearReadOnlyInTests(true); + try { + ShowIntentionActionsHandler.chooseActionAndInvoke(file, getEditor(), action, action.getText()); + UIUtil.dispatchAllInvocationEvents(); + } + finally { + handler.setClearReadOnlyInTests(false); + } } protected IntentionAction findActionWithText(@NotNull String text) { diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java b/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java index fdb50a02ffca..307716b28b38 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.vfs; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; @@ -27,7 +26,6 @@ import org.jetbrains.annotations.TestOnly; import java.util.Collection; public abstract class ReadonlyStatusHandler { - protected boolean myClearedByRequest; public static boolean ensureFilesWritable(@NotNull Project project, @NotNull VirtualFile... files) { return !getInstance(project).ensureFilesWritable(files).hasReadonlyFiles(); @@ -75,12 +73,9 @@ public abstract class ReadonlyStatusHandler { * Normally when file is read-only and ensureFilesWritable is called, a dialog box appears which allows user to decide * whether to clear read-only flag or not. This method allows to control what will happen in unit-test mode. * - * @param clearedByRequest if true, ensureFilesWritable will try to clear read-only status from passed files. + * @param clearReadOnlyInTests if true, ensureFilesWritable will try to clear read-only status from passed files. * Otherwise, read-only status is not modified (as if user refused to modify it). */ @TestOnly - public void setReadOnlyStatusClearedByRequest(boolean clearedByRequest) { - assert ApplicationManager.getApplication().isUnitTestMode(); - myClearedByRequest = clearedByRequest; - } + public abstract void setClearReadOnlyInTests(boolean clearReadOnlyInTests); } diff --git a/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java index c83e09ec29fa..4630d76263bc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vcs/readOnlyHandler/ReadonlyStatusHandlerImpl.java @@ -33,6 +33,7 @@ import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import java.util.*; @@ -40,6 +41,7 @@ import java.util.*; public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements PersistentStateComponent { private final Project myProject; private final WritingAccessProvider[] myAccessProviders; + protected boolean myClearReadOnlyInTests; public static class State { public boolean SHOW_DIALOG = true; @@ -95,7 +97,7 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements } if (ApplicationManager.getApplication().isUnitTestMode()) { - if (myClearedByRequest) { + if (myClearReadOnlyInTests) { processFiles(new ArrayList<>(Arrays.asList(fileInfos)), null); } return createResultStatus(files); @@ -156,6 +158,13 @@ public class ReadonlyStatusHandlerImpl extends ReadonlyStatusHandler implements } } + @Override + @TestOnly + public void setClearReadOnlyInTests(boolean clearReadOnlyInTests) { + assert ApplicationManager.getApplication().isUnitTestMode(); + myClearReadOnlyInTests = clearReadOnlyInTests; + } + private static class OperationStatusImpl extends OperationStatus { private final VirtualFile[] myReadonlyFiles;