From fd45c7cbbfc70541b0934594491af0c8b4309a88 Mon Sep 17 00:00:00 2001 From: Yuriy Artamonov Date: Mon, 26 Jan 2026 21:19:08 +0100 Subject: [PATCH] [fus] IJPL-231993 Test on StatisticsJobsScheduler registered in Java IDE Customization GitOrigin-RevId: 2b0e903532c57d9213737b8d017c6547fa92ca15 --- java/ide-customization/BUILD.bazel | 27 ++++++++++- .../intellij.java.ide.customization.iml | 2 + .../java/FusSchedulersRegistrationTest.java | 47 +++++++++++++++++++ java/java-tests/BUILD.bazel | 1 + .../testResources/tests/testGroups.properties | 1 + plugins/kotlin/idea/tests/BUILD.bazel | 1 + 6 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java diff --git a/java/ide-customization/BUILD.bazel b/java/ide-customization/BUILD.bazel index 779471b4a3a6..355868f234c1 100644 --- a/java/ide-customization/BUILD.bazel +++ b/java/ide-customization/BUILD.bazel @@ -30,4 +30,29 @@ jvm_library( "//notebooks/visualization", ] ) -### auto-generated section `build intellij.java.ide.customization` end \ No newline at end of file + +jvm_library( + name = "ide-customization_test_lib", + visibility = ["//visibility:public"], + srcs = glob(["test/**/*.kt", "test/**/*.java", "test/**/*.form"], allow_empty = True), + associates = [":ide-customization"], + deps = [ + "//java/java-psi-api:psi", + "//platform/core-api:core", + "//platform/lang-api:lang", + "//platform/platform-impl:ide-impl", + "//platform/lang-core", + "//platform/testFramework", + "//platform/testFramework:testFramework_test_lib", + ] +) +### auto-generated section `build intellij.java.ide.customization` end + +### auto-generated section `test intellij.java.ide.customization` start +load("@community//build:tests-options.bzl", "jps_test") + +jps_test( + name = "ide-customization_test", + runtime_deps = [":ide-customization_test_lib"] +) +### auto-generated section `test intellij.java.ide.customization` end \ No newline at end of file diff --git a/java/ide-customization/intellij.java.ide.customization.iml b/java/ide-customization/intellij.java.ide.customization.iml index d6ca27feb9ca..072baf309993 100644 --- a/java/ide-customization/intellij.java.ide.customization.iml +++ b/java/ide-customization/intellij.java.ide.customization.iml @@ -5,6 +5,7 @@ + @@ -20,5 +21,6 @@ + \ No newline at end of file diff --git a/java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java b/java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java new file mode 100644 index 000000000000..f81498908e25 --- /dev/null +++ b/java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java @@ -0,0 +1,47 @@ +// 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.ide.customization.java; + +import com.intellij.ide.ApplicationActivity; +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.extensions.impl.ExtensionPointImpl; +import com.intellij.openapi.util.Pair; +import com.intellij.testFramework.fixtures.BasePlatformTestCase; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; + +import java.util.Map; + +public class FusSchedulersRegistrationTest extends BasePlatformTestCase { + // runs with intellij.java.tests classpath + + public static final String PLUGIN_ID = "com.intellij.java.ide"; + + private final ExtensionPointName APP_ACTIVITIES_EP = + new ExtensionPointName<>("com.intellij.applicationActivity"); + private final ExtensionPointName POST_STARTUP_ACTIVITIES_EP = + new ExtensionPointName<>("com.intellij.postStartupActivity"); + + public void testSchedulerActivitiesAvailable() { + var applicationActivities = getExtensionClasses(APP_ACTIVITIES_EP); + assertTrue("StatisticsJobsScheduler is missing", + applicationActivities.containsKey("com.intellij.internal.statistic.updater.StatisticsJobsScheduler")); + assertTrue("StatisticsStateCollectorsScheduler is missing", + applicationActivities.containsKey("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler")); + + assertEquals(PLUGIN_ID, applicationActivities.get("com.intellij.internal.statistic.updater.StatisticsJobsScheduler")); + assertEquals(PLUGIN_ID, applicationActivities.get("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler")); + + var postStartup = getExtensionClasses(POST_STARTUP_ACTIVITIES_EP); + assertTrue("StatisticsStateCollectorsScheduler$MyStartupActivity is missing", + postStartup.containsKey("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler$MyStartupActivity")); + + assertEquals(PLUGIN_ID, applicationActivities.get("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler")); + } + + // operates with EP adapters instead of instances, because those activities are not created in unit tests mode + // they throw ExtensionNotApplicableException.create() from init + private static @NotNull Map<@NotNull String, String> getExtensionClasses(ExtensionPointName epName) { + return ContainerUtil.map2Map(((ExtensionPointImpl)epName.getPoint()).getSortedAdapters(), + it -> new Pair<>(it.getAssignableToClassName(), it.pluginDescriptor.getPluginId().getIdString())); + } +} diff --git a/java/java-tests/BUILD.bazel b/java/java-tests/BUILD.bazel index 31e2572ed489..a7e315b0a955 100644 --- a/java/java-tests/BUILD.bazel +++ b/java/java-tests/BUILD.bazel @@ -178,6 +178,7 @@ jvm_library( "//platform/testFramework/junit5:junit5_test_lib", "//platform/ml-api:ml", "//java/ide-customization", + "//java/ide-customization:ide-customization_test_lib", "//platform/backend/workspace", "//platform/util", "//platform/core-api:core", diff --git a/platform/testFramework/testResources/tests/testGroups.properties b/platform/testFramework/testResources/tests/testGroups.properties index 66738229af30..cf5c50f69966 100644 --- a/platform/testFramework/testResources/tests/testGroups.properties +++ b/platform/testFramework/testResources/tests/testGroups.properties @@ -312,6 +312,7 @@ com.intellij.java.* org.jetbrains.java.* org.jetbrains.uast.test.java.* com.intellij.codeInspection.tests.java.* +com.intellij.ide.customization.java.* com.siyeh.* -com.intellij.java.compiler.* -com.intellij.java.propertyBased.* diff --git a/plugins/kotlin/idea/tests/BUILD.bazel b/plugins/kotlin/idea/tests/BUILD.bazel index f78f2fa0202a..78d430574418 100644 --- a/plugins/kotlin/idea/tests/BUILD.bazel +++ b/plugins/kotlin/idea/tests/BUILD.bazel @@ -218,6 +218,7 @@ jvm_library( "//plugins/kotlin/kotlin.searching/base", "//plugins/kotlin/j2k/k1.old.post-processing", "//java/ide-customization", + "//java/ide-customization:ide-customization_test_lib", "//plugins/kotlin/refactorings/kotlin.refactorings.common:kotlin-refactorings-common", "//plugins/kotlin/base/test:test_test_lib", "@lib//:hamcrest",