mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move more test-only methods away from DCAI (part of IJPL-224385)
GitOrigin-RevId: 51a5dec31d599fca05c043eaf6b580475dd0a030
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c2add048cc
commit
6c47ea16f8
@@ -177,7 +177,7 @@ public class FileStatusMapTest extends DaemonAnalyzerTestCase {
|
||||
assertEmpty(highlightErrors());
|
||||
PsiClass psiClass = ((PsiJavaFile)getFile()).getClasses()[0];
|
||||
new RenameProcessor(myProject, psiClass, "Class2", false, false).run();
|
||||
myDaemonCodeAnalyzer.waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
new TestDaemonCodeAnalyzerImpl(getProject()).waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
TextRange dirty = myDaemonCodeAnalyzer.getFileStatusMap().getFileDirtyScope(document, getFile(), Pass.UPDATE_ALL);
|
||||
assertEquals(getFile().getTextRange(), dirty);
|
||||
|
||||
@@ -200,7 +200,7 @@ public class FileStatusMapTest extends DaemonAnalyzerTestCase {
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
|
||||
PsiElement elementAtCaret = myFile.findElementAt(myEditor.getCaretModel().getOffset());
|
||||
assertTrue(elementAtCaret instanceof PsiWhiteSpace);
|
||||
myDaemonCodeAnalyzer.waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
new TestDaemonCodeAnalyzerImpl(getProject()).waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
TextRange dirty = myDaemonCodeAnalyzer.getFileStatusMap().getFileDirtyScope(document, getFile(), Pass.UPDATE_ALL);
|
||||
assertEquals(elementAtCaret.getTextRange(), dirty);
|
||||
assertEmpty(highlightErrors());
|
||||
@@ -272,7 +272,7 @@ public class FileStatusMapTest extends DaemonAnalyzerTestCase {
|
||||
int offset = myEditor.getCaretModel().getOffset();
|
||||
type(' ');
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); // reset "defensively marked"
|
||||
myDaemonCodeAnalyzer.waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
new TestDaemonCodeAnalyzerImpl(getProject()).waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
assertEquals(new TextRange(offset-1, offset+1), fileStatusMap.getFileDirtyScope(document, myFile, Pass.LOCAL_INSPECTIONS));
|
||||
}
|
||||
|
||||
|
||||
+60
-20
@@ -1,15 +1,22 @@
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInsight.daemon.impl;
|
||||
|
||||
import com.intellij.codeHighlighting.*;
|
||||
import com.intellij.codeHighlighting.BackgroundEditorHighlighter;
|
||||
import com.intellij.codeHighlighting.HighlightingPass;
|
||||
import com.intellij.codeHighlighting.Pass;
|
||||
import com.intellij.codeHighlighting.TextEditorHighlightingPass;
|
||||
import com.intellij.codeHighlighting.TextEditorHighlightingPassRegistrar;
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzerSettings;
|
||||
import com.intellij.codeInsight.daemon.LineMarkerInfo;
|
||||
import com.intellij.codeInsight.daemon.ReferenceImporter;
|
||||
import com.intellij.codeInsight.hint.HintManager;
|
||||
import com.intellij.codeInsight.intention.impl.FileLevelIntentionComponent;
|
||||
import com.intellij.codeInsight.intention.impl.IntentionHintComponent;
|
||||
import com.intellij.codeInsight.multiverse.*;
|
||||
import com.intellij.codeInsight.multiverse.CodeInsightContext;
|
||||
import com.intellij.codeInsight.multiverse.CodeInsightContextHighlightingUtil;
|
||||
import com.intellij.codeInsight.multiverse.CodeInsightContextUtil;
|
||||
import com.intellij.codeInsight.multiverse.CodeInsightContexts;
|
||||
import com.intellij.codeInsight.multiverse.EditorContextManager;
|
||||
import com.intellij.codeInsight.quickfix.LazyQuickFixUpdater;
|
||||
import com.intellij.codeInspection.ex.GlobalInspectionContextBase;
|
||||
import com.intellij.codeWithMe.ClientId;
|
||||
@@ -22,7 +29,11 @@ import com.intellij.lang.annotation.HighlightSeverity;
|
||||
import com.intellij.notebook.editor.BackedVirtualFile;
|
||||
import com.intellij.notebook.editor.BackedVirtualFileProvider;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.*;
|
||||
import com.intellij.openapi.application.AccessToken;
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.components.PersistentStateComponent;
|
||||
import com.intellij.openapi.components.State;
|
||||
@@ -40,14 +51,27 @@ import com.intellij.openapi.editor.impl.DocumentMarkupModel;
|
||||
import com.intellij.openapi.editor.impl.EditorMarkupModelImpl;
|
||||
import com.intellij.openapi.editor.markup.MarkupModel;
|
||||
import com.intellij.openapi.editor.markup.RangeHighlighter;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.fileEditor.ClientFileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorWithTextEditors;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.*;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.DumbServiceImpl;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.ProperTextRange;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -59,25 +83,46 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiEditorUtil;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.concurrency.AppExecutorUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ConcurrencyUtil;
|
||||
import com.intellij.util.ExceptionUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.concurrency.EdtExecutorService;
|
||||
import com.intellij.util.concurrency.ThreadingAssertions;
|
||||
import com.intellij.util.concurrency.annotations.RequiresBackgroundThread;
|
||||
import com.intellij.util.concurrency.annotations.RequiresEdt;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.io.storage.HeavyProcessLatch;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import io.opentelemetry.context.Context;
|
||||
import kotlinx.coroutines.CoroutineScope;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.*;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.jetbrains.annotations.Unmodifiable;
|
||||
import org.jetbrains.annotations.VisibleForTesting;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.*;
|
||||
import javax.swing.SwingUtilities;
|
||||
import java.awt.Window;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ForkJoinPool;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
@@ -95,7 +140,7 @@ public final class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx
|
||||
private static final @NotNull Key<Boolean> COMPLETE_ESSENTIAL_HIGHLIGHTING_KEY = Key.create("COMPLETE_ESSENTIAL_HIGHLIGHTING");
|
||||
@NotNull private final Project myProject;
|
||||
private final DaemonCodeAnalyzerSettings mySettings;
|
||||
private final DaemonListeners myListeners;
|
||||
final DaemonListeners myListeners;
|
||||
private PsiDocumentManager psiDocumentManager;
|
||||
private FileEditorManager fileEditorManager;
|
||||
private final Map<FileEditor, DaemonProgressIndicator> myUpdateProgress = new HashMap<>(); // guarded by `this` lock
|
||||
@@ -1605,11 +1650,6 @@ public final class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx
|
||||
public boolean isRestartToCompleteEssentialHighlightingRequested() {
|
||||
return completeEssentialHighlightingRequested;
|
||||
}
|
||||
@TestOnly
|
||||
public void waitForUpdateFileStatusBackgroundQueueInTests() {
|
||||
assert ApplicationManager.getApplication().isUnitTestMode();
|
||||
myListeners.waitForUpdateFileStatusQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
@RequiresBackgroundThread
|
||||
|
||||
+9
-8
@@ -66,7 +66,8 @@ public final class TestDaemonCodeAnalyzerImpl {
|
||||
|
||||
public TestDaemonCodeAnalyzerImpl(@NotNull Project project) {
|
||||
myProject = project;
|
||||
myDaemonCodeAnalyzer = getDaemonCodeAnalyzer(myProject);
|
||||
myDaemonCodeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject);
|
||||
assert !myDaemonCodeAnalyzer.myDisposed;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,7 +129,8 @@ public final class TestDaemonCodeAnalyzerImpl {
|
||||
|
||||
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
|
||||
PsiConsistencyAssertions.assertNoFileTextMismatch(psiFile, editor.getDocument(), null);
|
||||
myDaemonCodeAnalyzer.waitForUpdateFileStatusBackgroundQueueInTests(); // update the file status map before prohibiting its modifications
|
||||
// update the file status map before prohibiting its modifications
|
||||
waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
FileStatusMap fileStatusMap = myDaemonCodeAnalyzer.getFileStatusMap();
|
||||
fileStatusMap.runAllowingDirt(canChangeDocument, () -> {
|
||||
for (int ignoreId : passesToIgnore) {
|
||||
@@ -144,12 +146,6 @@ public final class TestDaemonCodeAnalyzerImpl {
|
||||
});
|
||||
}
|
||||
|
||||
private static @NotNull DaemonCodeAnalyzerImpl getDaemonCodeAnalyzer(Project project) {
|
||||
DaemonCodeAnalyzerImpl daemonCodeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(project);
|
||||
assert !daemonCodeAnalyzer.myDisposed;
|
||||
return daemonCodeAnalyzer;
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
private void doRunPasses(@NotNull DaemonCodeAnalyzerImpl daemonCodeAnalyzer,
|
||||
@NotNull TextEditor textEditor,
|
||||
@@ -344,4 +340,9 @@ public final class TestDaemonCodeAnalyzerImpl {
|
||||
} while (!future.isDone());
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
public void waitForUpdateFileStatusBackgroundQueueInTests() {
|
||||
assert ApplicationManager.getApplication().isUnitTestMode();
|
||||
myDaemonCodeAnalyzer.myListeners.waitForUpdateFileStatusQueue();
|
||||
}
|
||||
}
|
||||
|
||||
+28
-9
@@ -1,8 +1,7 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.openapi.editor.impl;
|
||||
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
|
||||
import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl;
|
||||
import com.intellij.codeInsight.daemon.impl.TestDaemonCodeAnalyzerImpl;
|
||||
import com.intellij.lang.FileASTNode;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
@@ -10,7 +9,12 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.command.impl.UndoManagerImpl;
|
||||
import com.intellij.openapi.command.undo.UndoManager;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.FoldRegion;
|
||||
import com.intellij.openapi.editor.LazyRangeMarkerFactory;
|
||||
import com.intellij.openapi.editor.RangeMarker;
|
||||
import com.intellij.openapi.editor.event.DocumentEvent;
|
||||
import com.intellij.openapi.editor.event.DocumentListener;
|
||||
import com.intellij.openapi.editor.ex.DocumentEx;
|
||||
@@ -21,7 +25,11 @@ import com.intellij.openapi.editor.markup.HighlighterTargetArea;
|
||||
import com.intellij.openapi.editor.markup.MarkupModel;
|
||||
import com.intellij.openapi.editor.markup.RangeHighlighter;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.TextRangeScalarUtil;
|
||||
import com.intellij.openapi.util.ThrowableComputable;
|
||||
import com.intellij.openapi.util.Trinity;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiDocumentListener;
|
||||
@@ -29,7 +37,13 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.PsiDocumentManagerImpl;
|
||||
import com.intellij.psi.impl.PsiToDocumentSynchronizer;
|
||||
import com.intellij.testFramework.*;
|
||||
import com.intellij.testFramework.HeavyPlatformTestCase;
|
||||
import com.intellij.testFramework.LeakHunter;
|
||||
import com.intellij.testFramework.LightPlatformTestCase;
|
||||
import com.intellij.testFramework.PerformanceUnitTest;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.testFramework.Timings;
|
||||
import com.intellij.testFramework.VfsTestUtil;
|
||||
import com.intellij.tools.ide.metrics.benchmark.Benchmark;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.TestTimeOut;
|
||||
@@ -44,7 +58,13 @@ import java.io.IOException;
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
@@ -994,8 +1014,7 @@ public class RangeMarkerTest extends LightPlatformTestCase {
|
||||
RangeMarker m3 = document.createRangeMarker(2, 5);
|
||||
assertEquals(2, ((DocumentImpl)document).getRangeMarkersNodeSize());
|
||||
deleteString(document, 4, 5);
|
||||
DaemonCodeAnalyzerImpl myDaemonCodeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzerImpl.getInstanceEx(getProject());
|
||||
myDaemonCodeAnalyzer.waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
new TestDaemonCodeAnalyzerImpl(getProject()).waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
assertTrue(m1.isValid());
|
||||
assertTrue(m2.isValid());
|
||||
assertTrue(m3.isValid());
|
||||
@@ -1559,7 +1578,7 @@ public class RangeMarkerTest extends LightPlatformTestCase {
|
||||
Reference<RangeMarker> persistentMarkerRef = new WeakReference<>(persistentMarker[0]);
|
||||
marker[0] = null;
|
||||
persistentMarker[0] = null;
|
||||
((DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(getProject())).waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
new TestDaemonCodeAnalyzerImpl(getProject()).waitForUpdateFileStatusBackgroundQueueInTests();
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
|
||||
while (markerRef.get() != null || persistentMarkerRef.get() != null) {
|
||||
GCUtil.tryGcSoftlyReachableObjects();
|
||||
|
||||
Reference in New Issue
Block a user