From 9fe03ea3f75daade86b6c2c146d7f1935d872f54 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 14 Aug 2017 15:45:57 +0200 Subject: [PATCH] IDEA-176756 Assert stub-AST consistency in all intention tests --- .../fixtures/impl/CodeInsightTestFixtureImpl.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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));