From 735f01ce0506090132a420ae0fcbf65acbfc68fc Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 31 May 2020 09:16:52 +0200 Subject: [PATCH] deprecate test-only runStartupActivities GitOrigin-RevId: ab697c5a8a9aa110b8d5887db6726525eb0c2ba9 --- .../daemon/DaemonAnalyzerTestCase.java | 4 ---- .../intellij/openapi/startup/StartupManager.java | 4 ++-- .../intellij/diagnostic/PerformanceWatcher.java | 2 +- .../ide/startup/impl/StartupManagerImpl.java | 5 +++++ .../roots/impl/ProjectRootManagerImpl.java | 16 +++++++--------- .../com/intellij/testFramework/FixtureRule.kt | 4 ++-- .../testFramework/HeavyPlatformTestCase.java | 2 +- .../testFramework/LightPlatformTestCase.java | 2 +- .../intellij/testFramework/PlatformTestUtil.java | 4 ++-- .../fixtures/impl/HeavyIdeaTestFixtureImpl.java | 2 +- .../testFramework/rules/ProjectModelRule.kt | 6 +----- .../openapi/vcs/DirectoryMappingListTest.kt | 9 +-------- .../workspace/jps/LegacyBridgeModulesTest.kt | 6 +++--- .../idea/maven/project/MavenProjectsManager.java | 13 +++++++++---- 14 files changed, 36 insertions(+), 43 deletions(-) diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java index 4893f8821d0e..0fe8409073ef 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java @@ -14,7 +14,6 @@ import com.intellij.codeInspection.InspectionToolProvider; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ex.InspectionProfileImpl; import com.intellij.ide.highlighter.JavaFileType; -import com.intellij.ide.startup.StartupManagerEx; import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.lang.ExternalAnnotatorsFilter; import com.intellij.lang.LanguageAnnotators; @@ -76,9 +75,6 @@ public abstract class DaemonAnalyzerTestCase extends JavaCodeInsightTestCase { DaemonCodeAnalyzerImpl daemonCodeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(getProject()); daemonCodeAnalyzer.prepareForTest(); - StartupManagerImpl startupManager = (StartupManagerImpl)StartupManagerEx.getInstanceEx(getProject()); - startupManager.runStartupActivities(); - startupManager.runPostStartupActivitiesRegisteredDynamically(); DaemonCodeAnalyzerSettings.getInstance().setImportHintEnabled(false); if (isStressTest()) { diff --git a/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java b/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java index 25872b1f2ba0..850bd2f0115a 100644 --- a/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java +++ b/platform/core-api/src/com/intellij/openapi/startup/StartupManager.java @@ -2,6 +2,7 @@ package com.intellij.openapi.startup; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** @@ -31,9 +32,8 @@ public abstract class StartupManager { /** * Registers an activity that is performed during project load while the "Loading Project" * progress bar is displayed. You may NOT access the PSI structures from the activity. - * - * @param runnable the activity to execute. */ + @ApiStatus.Internal public abstract void registerStartupActivity(@NotNull Runnable runnable); /** diff --git a/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcher.java b/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcher.java index 760088a3de29..d93ed2adfdf2 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcher.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/PerformanceWatcher.java @@ -393,7 +393,7 @@ public final class PerformanceWatcher implements Disposable { Objects.equals(el1.getFileName(), el2.getFileName()); } - public class Snapshot { + public final class Snapshot { private final ApdexData myStartGeneralSnapshot = myGeneralApdex; private final ApdexData myStartSwingSnapshot = mySwingApdex; private final long myStartMillis = System.currentTimeMillis(); diff --git a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java index cc506d264412..85a47120611e 100644 --- a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java @@ -37,6 +37,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; +import java.nio.file.Path; import java.util.*; import java.util.concurrent.Future; import java.util.concurrent.ScheduledFuture; @@ -184,7 +185,11 @@ public class StartupManagerImpl extends StartupManagerEx { }); } + /** + * @deprecated Use {@link com.intellij.testFramework.PlatformTestUtil#loadAndOpenProject(Path)} in tests. + */ @TestOnly + @Deprecated public void runStartupActivities() { if (!myStartupActivitiesPassed) { doRunStartUpActivities(null); diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java index 4cfdd856f999..de624399d8bc 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java @@ -53,9 +53,9 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Pers protected boolean myStartupActivityPerformed; private boolean myStateLoaded = false; - private final RootProviderChangeListener myRootProviderChangeListener = new RootProviderChangeListener(); + private final RootProvider.RootSetChangedListener myRootProviderChangeListener = new RootProviderChangeListener(); - protected class BatchSession { + protected final class BatchSession { private final boolean myFileTypes; private int myBatchLevel; private boolean myChanged; @@ -64,14 +64,14 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Pers myFileTypes = fileTypes; } - protected void levelUp() { + void levelUp() { if (myBatchLevel == 0) { myChanged = false; } myBatchLevel += 1; } - protected void levelDown() { + void levelDown() { myBatchLevel -= 1; if (myChanged && myBatchLevel == 0) { try { @@ -180,10 +180,8 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Pers @Override public VirtualFile @NotNull [] getContentRootsFromAllModules() { List result = new ArrayList<>(); - final Module[] modules = getModuleManager().getSortedModules(); - for (Module module : modules) { - final VirtualFile[] files = ModuleRootManager.getInstance(module).getContentRoots(); - ContainerUtil.addAll(result, files); + for (Module module : getModuleManager().getSortedModules()) { + Collections.addAll(result, ModuleRootManager.getInstance(module).getContentRoots()); } ContainerUtil.addIfNotNull(result, myProject.getBaseDir()); return VfsUtilCore.toVirtualFileArray(result); @@ -533,7 +531,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Pers } } - private class LibraryTableMultiListener extends ListenerContainer implements LibraryTable.Listener { + private final class LibraryTableMultiListener extends ListenerContainer implements LibraryTable.Listener { private LibraryTableMultiListener() { super(new LibraryTable.Listener[0]); } diff --git a/platform/testFramework/src/com/intellij/testFramework/FixtureRule.kt b/platform/testFramework/src/com/intellij/testFramework/FixtureRule.kt index 7c153658f3aa..959176d58e08 100644 --- a/platform/testFramework/src/com/intellij/testFramework/FixtureRule.kt +++ b/platform/testFramework/src/com/intellij/testFramework/FixtureRule.kt @@ -158,7 +158,7 @@ class ProjectRule(val projectDescriptor: LightProjectDescriptor = LightProjectDe } if (projectOpened.compareAndSet(false, true)) { - runInEdtAndWait { PlatformTestUtil.openTestProject(project) } + runInEdtAndWait { PlatformTestUtil.openProject(project) } } return result!! } @@ -275,7 +275,7 @@ suspend fun Project.use(task: suspend (Project) -> Unit) { try { if (!projectManager.isProjectOpened(this)) { withContext(AppUIExecutor.onUiThread().coroutineDispatchingContext()) { - PlatformTestUtil.openTestProject(this@use) + PlatformTestUtil.openProject(this@use) } } task(this) diff --git a/platform/testFramework/src/com/intellij/testFramework/HeavyPlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/HeavyPlatformTestCase.java index 058e191171e4..4e9ad37fb8d9 100644 --- a/platform/testFramework/src/com/intellij/testFramework/HeavyPlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/HeavyPlatformTestCase.java @@ -252,7 +252,7 @@ public abstract class HeavyPlatformTestCase extends UsefulTestCase implements Da protected void setUpProject() throws Exception { myProject = doCreateProject(getProjectDirOrFile()); - PlatformTestUtil.openTestProject(myProject); + PlatformTestUtil.openProject(myProject); LocalFileSystem.getInstance().refreshIoFiles(myFilesToDelete); WriteAction.run(() -> diff --git a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java index 9e7bd4055ba4..b230e89165eb 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java @@ -281,7 +281,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da Project project = ourProject; try { - PlatformTestUtil.openTestProject(project); + PlatformTestUtil.openProject(project); } catch (Throwable e) { setProject(null); diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java b/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java index dccfe8022d65..556ca7e12349 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java @@ -1100,11 +1100,11 @@ public final class PlatformTestUtil { public static @NotNull Project loadAndOpenProject(@NotNull Path path) { Project project = ProjectManagerImpl.loadProject(path, null); - openTestProject(project); + openProject(project); return project; } - public static void openTestProject(@NotNull Project project) { + public static void openProject(@NotNull Project project) { assert ApplicationManager.getApplication().isUnitTestMode(); if (!ProjectManagerEx.getInstanceEx().openProject(project)) { throw new IllegalStateException("openProject returned false"); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyIdeaTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyIdeaTestFixtureImpl.java index a029b3e55627..bd4b648c4a0c 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyIdeaTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyIdeaTestFixtureImpl.java @@ -182,7 +182,7 @@ final class HeavyIdeaTestFixtureImpl extends BaseFixture implements HeavyIdeaTes }); EdtTestUtil.runInEdtAndWait(() -> { - PlatformTestUtil.openTestProject(myProject); + PlatformTestUtil.openProject(myProject); for (ModuleFixtureBuilder moduleFixtureBuilder : myModuleFixtureBuilders) { moduleFixtureBuilder.getFixture().setUp(); diff --git a/platform/testFramework/src/com/intellij/testFramework/rules/ProjectModelRule.kt b/platform/testFramework/src/com/intellij/testFramework/rules/ProjectModelRule.kt index 72426aed110d..ce5230ca2532 100644 --- a/platform/testFramework/src/com/intellij/testFramework/rules/ProjectModelRule.kt +++ b/platform/testFramework/src/com/intellij/testFramework/rules/ProjectModelRule.kt @@ -20,10 +20,6 @@ import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar import com.intellij.openapi.util.Ref import com.intellij.openapi.util.io.systemIndependentPath import com.intellij.testFramework.* -import com.intellij.testFramework.DisposableRule -import com.intellij.testFramework.RuleChain -import com.intellij.testFramework.createHeavyProject -import com.intellij.testFramework.runInEdtAndWait import com.intellij.workspace.api.TypedEntityStorageBuilder import com.intellij.workspace.ide.WorkspaceModelInitialTestContent import org.junit.rules.ExternalResource @@ -47,7 +43,7 @@ class ProjectModelRule(private val forceEnableWorkspaceModel: Boolean = false) : createHeavyProject(baseProjectDir.root.toPath()) } runInEdtAndWait { - PlatformTestUtil.openTestProject(project) + PlatformTestUtil.openProject(project) } } diff --git a/platform/vcs-tests/testSrc/com/intellij/openapi/vcs/DirectoryMappingListTest.kt b/platform/vcs-tests/testSrc/com/intellij/openapi/vcs/DirectoryMappingListTest.kt index 29f68f35076f..abf6731236a0 100644 --- a/platform/vcs-tests/testSrc/com/intellij/openapi/vcs/DirectoryMappingListTest.kt +++ b/platform/vcs-tests/testSrc/com/intellij/openapi/vcs/DirectoryMappingListTest.kt @@ -1,8 +1,6 @@ // Copyright 2000-2020 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.vcs -import com.intellij.ide.startup.impl.StartupManagerImpl -import com.intellij.openapi.startup.StartupManager import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.SystemInfo import com.intellij.openapi.util.io.FileUtil @@ -19,7 +17,6 @@ import com.intellij.testFramework.HeavyPlatformTestCase import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.PsiTestUtil import com.intellij.testFramework.TestLoggerFactory -import com.intellij.util.ui.UIUtil import com.intellij.vcsUtil.VcsUtil import org.junit.Assume import java.io.File @@ -66,11 +63,7 @@ class DirectoryMappingListTest : HeavyPlatformTestCase() { mappings = NewMappings(myProject, vcsManager) mappings.activateActiveVcses() Disposer.register(testRootDisposable, mappings) - - UIUtil.dispatchAllInvocationEvents() - val startupManager = StartupManager.getInstance(myProject) as StartupManagerImpl - startupManager.runStartupActivities() - startupManager.runPostStartupActivitiesRegisteredDynamically() + PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue() vcsManager.waitForInitialized() } diff --git a/platform/workspaceModel-ide-tests/testSrc/com/intellij/workspace/jps/LegacyBridgeModulesTest.kt b/platform/workspaceModel-ide-tests/testSrc/com/intellij/workspace/jps/LegacyBridgeModulesTest.kt index 2ed10e288828..9d58de9d098f 100644 --- a/platform/workspaceModel-ide-tests/testSrc/com/intellij/workspace/jps/LegacyBridgeModulesTest.kt +++ b/platform/workspaceModel-ide-tests/testSrc/com/intellij/workspace/jps/LegacyBridgeModulesTest.kt @@ -407,7 +407,7 @@ class LegacyBridgeModulesTest { WorkspaceModelInitialTestContent.withInitialContent(builder.toStorage()) { val project = ProjectManager.getInstance().createProject("testProject", iprFile.path)!! - invokeAndWaitIfNeeded { PlatformTestUtil.openTestProject(project) } + invokeAndWaitIfNeeded { PlatformTestUtil.openProject(project) } disposableRule.disposable.attach { invokeAndWaitIfNeeded { ProjectManagerEx.getInstanceEx().forceCloseProject(project) } } val module = ModuleManager.getInstance(project).findModuleByName("test") @@ -442,7 +442,7 @@ class LegacyBridgeModulesTest { WorkspaceModelInitialTestContent.withInitialContent(builder.toStorage()) { val project = ProjectManager.getInstance().createProject("testProject", iprFile.path)!! - invokeAndWaitIfNeeded { PlatformTestUtil.openTestProject(project) } + invokeAndWaitIfNeeded { PlatformTestUtil.openProject(project) } disposableRule.disposable.attach { invokeAndWaitIfNeeded { ProjectManagerEx.getInstanceEx().forceCloseProject(project) } } val projectLibraryTable = LibraryTablesRegistrar.getInstance().getLibraryTable(project) @@ -658,7 +658,7 @@ internal fun createEmptyTestProject(temporaryDirectory: TemporaryDirectory, disp val project = WorkspaceModelInitialTestContent.withInitialContent(TypedEntityStorageBuilder.create()) { ProjectManager.getInstance().createProject("testProject", projectDir.resolve("testProject.ipr").toString())!! } - invokeAndWaitIfNeeded { PlatformTestUtil.openTestProject(project) } + invokeAndWaitIfNeeded { PlatformTestUtil.openProject(project) } disposableRule.disposable.attach { invokeAndWaitIfNeeded { ProjectManagerEx.getInstanceEx().forceCloseProject(project) } } return project } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 6b1acbe6f4d5..ea7def19f7e4 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -195,7 +195,9 @@ public final class MavenProjectsManager extends MavenSimpleProjectComponent StartupManager startupManager = StartupManager.getInstance(myProject); startupManager.registerStartupActivity(() -> { boolean wasMavenized = !myState.originalFiles.isEmpty(); - if (!wasMavenized) return; + if (!wasMavenized) { + return; + } initMavenized(); }); @@ -267,8 +269,9 @@ public final class MavenProjectsManager extends MavenSimpleProjectComponent private void initNew(List files, MavenExplicitProfiles explicitProfiles) { myState.originalFiles = MavenUtil.collectPaths(files); - getWorkspaceSettings().setEnabledProfiles(explicitProfiles.getEnabledProfiles()); - getWorkspaceSettings().setDisabledProfiles(explicitProfiles.getDisabledProfiles()); + MavenWorkspaceSettings workspaceSettings = getWorkspaceSettings(); + workspaceSettings.setEnabledProfiles(explicitProfiles.getEnabledProfiles()); + workspaceSettings.setDisabledProfiles(explicitProfiles.getDisabledProfiles()); doInit(true); } @@ -280,7 +283,9 @@ public final class MavenProjectsManager extends MavenSimpleProjectComponent private void doInit(final boolean isNew) { initLock.lock(); try { - if (isInitialized.getAndSet(true)) return; + if (isInitialized.getAndSet(true)) { + return; + } initProjectsTree(!isNew);