diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 6b63a6729741..20255042c82d 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -1874,8 +1874,9 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig // overrides "getElementToMakeWritable" or has the following line: // if (!FileModificationService.getInstance().prepareFileForWrite(file)) return; - ReadonlyStatusHandlerImpl handler = (ReadonlyStatusHandlerImpl)ReadonlyStatusHandler.getInstance(file.getProject()); - VirtualFile vFile = InjectedLanguageUtil.getTopLevelFile(file).getVirtualFile(); + Project project = file.getProject(); + ReadonlyStatusHandlerImpl handler = (ReadonlyStatusHandlerImpl)ReadonlyStatusHandler.getInstance(project); + VirtualFile vFile = Objects.requireNonNull(InjectedLanguageUtil.getTopLevelFile(file)).getVirtualFile(); setReadOnly(vFile, true); handler.setClearReadOnlyInTests(true); AtomicBoolean result = new AtomicBoolean(); @@ -1883,6 +1884,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig ApplicationManager.getApplication().invokeLater( () -> result.set(ShowIntentionActionsHandler.chooseActionAndInvoke(file, editor, action, actionText))); UIUtil.dispatchAllInvocationEvents(); + checkPsiTextConsistency(project, vFile); } catch (AssertionError e) { ExceptionUtil.rethrowUnchecked(ExceptionUtil.getRootCause(e)); @@ -1895,6 +1897,13 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig return result.get(); } + private static void checkPsiTextConsistency(Project project, VirtualFile vFile) { + PsiFile topLevelPsi = vFile.isValid() ? PsiManager.getInstance(project).findFile(vFile) : null; + if (topLevelPsi != null) { + PsiTestUtil.checkStubsMatchText(topLevelPsi); + } + } + private static void setReadOnly(VirtualFile vFile, boolean readOnlyStatus) { try { WriteAction.run(() -> ReadOnlyAttributeUtil.setReadOnlyAttribute(vFile, readOnlyStatus));