From 7d7ba2c4b3c2dd4107a5a1b1f325f36464f9ec4e Mon Sep 17 00:00:00 2001 From: Aleksey Dobrynin Date: Wed, 13 Dec 2023 16:58:47 +0100 Subject: [PATCH] [java, test] add tests for "Generate module-info descriptors" IDEA-187523 GitOrigin-RevId: 4b3e2dd82bf085d36e2104ef6e13e9412e3cce19 --- .../Java9GenerateModuleDescriptorsAction.java | 27 +- .../dependentModules/after/.idea/misc.xml | 6 + .../dependentModules/after/.idea/modules.xml | 10 + .../dependentModules/after/A/proj-a.iml | 12 + .../after/A/src/module-info.java | 3 + .../after/A/src/org/client/Browser.java | 9 + .../dependentModules/after/B/proj-b.iml | 12 + .../after/B/src/module-info.java | 5 + .../after/B/src/org/driver/Monitor.java | 9 + .../B/src/org/driver/factory/ApiFactory.java | 10 + .../dependentModules/after/C/proj-c.iml | 11 + .../after/C/src/module-info.java | 4 + .../after/C/src/org/declaration/API.java | 5 + .../C/src/org/declaration/impl/DummyApi.java | 10 + .../proj-a/org/client/Browser.class | Bin 0 -> 446 bytes .../proj-b/org/driver/Monitor.class | Bin 0 -> 626 bytes .../org/driver/factory/ApiFactory.class | Bin 0 -> 414 bytes .../proj-c/org/declaration/API.class | Bin 0 -> 141 bytes .../org/declaration/impl/DummyApi.class | Bin 0 -> 418 bytes .../dependentModules/before/.idea/misc.xml | 6 + .../dependentModules/before/.idea/modules.xml | 10 + .../dependentModules/before/A/proj-a.iml | 12 + .../before/A/src/org/client/Browser.java | 9 + .../dependentModules/before/B/proj-b.iml | 12 + .../before/B/src/org/driver/Monitor.java | 9 + .../B/src/org/driver/factory/ApiFactory.java | 10 + .../dependentModules/before/C/proj-c.iml | 11 + .../before/C/src/org/declaration/API.java | 5 + .../C/src/org/declaration/impl/DummyApi.java | 10 + .../proj-a/org/client/Browser.class | Bin 0 -> 446 bytes .../proj-b/org/driver/Monitor.class | Bin 0 -> 626 bytes .../org/driver/factory/ApiFactory.class | Bin 0 -> 414 bytes .../proj-c/org/declaration/API.class | Bin 0 -> 141 bytes .../org/declaration/impl/DummyApi.class | Bin 0 -> 418 bytes .../singleModule/after/.idea/misc.xml | 6 + .../singleModule/after/.idea/modules.xml | 8 + .../singleModule/after/proj-a.iml | 11 + .../singleModule/after/src/module-info.java | 2 + .../after/src/org/client/Main.java | 7 + .../production/proj-a/org/client/Main.class | Bin 0 -> 523 bytes .../singleModule/before/.idea/misc.xml | 6 + .../singleModule/before/.idea/modules.xml | 8 + .../singleModule/before/proj-a.iml | 11 + .../before/src/org/client/Main.java | 7 + .../production/proj-a/org/client/Main.class | Bin 0 -> 523 bytes .../after/.idea/annotations.jar | Bin 0 -> 2080 bytes .../after/.idea/misc.xml | 15 ++ .../after/.idea/modules.xml | 8 + .../after/maven-project.iml | 20 ++ .../singleModuleWithDependency/after/pom.xml | 21 ++ .../after/src/main/java/module-info.java | 3 + .../after/src/main/java/org/client/Main.java | 9 + .../target/classes/org/client/Main.class | Bin 0 -> 1018 bytes .../before/.idea/annotations.jar | Bin 0 -> 2080 bytes .../before/.idea/misc.xml | 15 ++ .../before/.idea/modules.xml | 8 + .../before/maven-project.iml | 20 ++ .../singleModuleWithDependency/before/pom.xml | 21 ++ .../before/src/main/java/org/client/Main.java | 9 + .../target/classes/org/client/Main.class | Bin 0 -> 1018 bytes ...a9GenerateModuleDescriptorsActionTest.java | 255 ++++++++++++++++++ .../testFramework/LightPlatformTestCase.java | 5 +- .../testFramework/LightProjectDescriptor.java | 14 +- 63 files changed, 702 insertions(+), 14 deletions(-) create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/misc.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/modules.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/proj-a.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/module-info.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/org/client/Browser.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/proj-b.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/module-info.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/Monitor.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/factory/ApiFactory.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/proj-c.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/module-info.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/API.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/impl/DummyApi.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-a/org/client/Browser.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-b/org/driver/Monitor.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-b/org/driver/factory/ApiFactory.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-c/org/declaration/API.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-c/org/declaration/impl/DummyApi.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/misc.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/modules.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/proj-a.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/src/org/client/Browser.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/proj-b.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/Monitor.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/factory/ApiFactory.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/proj-c.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/API.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/impl/DummyApi.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-a/org/client/Browser.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-b/org/driver/Monitor.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-b/org/driver/factory/ApiFactory.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-c/org/declaration/API.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-c/org/declaration/impl/DummyApi.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/misc.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/modules.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/proj-a.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/module-info.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/org/client/Main.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/target/production/proj-a/org/client/Main.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/misc.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/modules.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/proj-a.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/src/org/client/Main.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/target/production/proj-a/org/client/Main.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/annotations.jar create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/misc.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/modules.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/maven-project.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/pom.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/module-info.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/org/client/Main.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/target/classes/org/client/Main.class create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/annotations.jar create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/misc.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/modules.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/maven-project.iml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/pom.xml create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/src/main/java/org/client/Main.java create mode 100644 java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/target/classes/org/client/Main.class create mode 100644 java/java-tests/testSrc/com/intellij/java/codeInsight/actions/Java9GenerateModuleDescriptorsActionTest.java diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9GenerateModuleDescriptorsAction.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9GenerateModuleDescriptorsAction.java index 785702eae020..a3975649ac84 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9GenerateModuleDescriptorsAction.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9GenerateModuleDescriptorsAction.java @@ -1,4 +1,4 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInspection.java19api; import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil; @@ -14,7 +14,7 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadAction; -import com.intellij.openapi.application.ex.ApplicationEx; +import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.compiler.CompileScope; import com.intellij.openapi.compiler.CompilerManager; @@ -27,6 +27,7 @@ import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; +import com.intellij.openapi.progress.impl.CoreProgressManager; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.JavaSdkVersion; @@ -251,14 +252,20 @@ public final class Java9GenerateModuleDescriptorsAction extends AnAction { } private void createFilesLater(List moduleInfos) { - ApplicationManager.getApplication().invokeLater(() -> { - if (!myProject.isDisposed()) { - CommandProcessor.getInstance().executeCommand(myProject, () -> - ((ApplicationEx)ApplicationManager.getApplication()).runWriteActionWithCancellableProgressInDispatchThread( - getCommandTitle(), myProject, null, - indicator -> createFiles(myProject, moduleInfos, indicator)), getCommandTitle(), null); - } - }); + Runnable createFiles = () -> { + if (myProject.isDisposed()) return; + CommandProcessor.getInstance().executeCommand(myProject, () -> + ApplicationManagerEx.getApplicationEx().runWriteActionWithCancellableProgressInDispatchThread( + getCommandTitle(), myProject, null, + indicator -> createFiles(myProject, moduleInfos, indicator)), getCommandTitle(), null); + }; + + if (CoreProgressManager.shouldKeepTasksAsynchronous()) { + ApplicationManager.getApplication().invokeLater(createFiles); + } + else { + ApplicationManager.getApplication().invokeAndWait(createFiles); + } } private Map> collectDependencies(Map> classFiles) { diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/misc.xml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/misc.xml new file mode 100644 index 000000000000..d4ef29a2bedd --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/modules.xml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/modules.xml new file mode 100644 index 000000000000..c3e8a8f7acd7 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/.idea/modules.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/proj-a.iml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/proj-a.iml new file mode 100644 index 000000000000..90ef326fcb8c --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/proj-a.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/module-info.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/module-info.java new file mode 100644 index 000000000000..864e34253a5b --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/module-info.java @@ -0,0 +1,3 @@ +module proj.a { + requires proj.b; +} \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/org/client/Browser.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/org/client/Browser.java new file mode 100644 index 000000000000..40528ffd92c8 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/A/src/org/client/Browser.java @@ -0,0 +1,9 @@ +package org.client; + +import org.driver.Monitor; + +public class Browser { + public static void main(String[] args) { + new Monitor().exec(); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/proj-b.iml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/proj-b.iml new file mode 100644 index 000000000000..f15263a7596c --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/proj-b.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/module-info.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/module-info.java new file mode 100644 index 000000000000..7eb512301f6e --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/module-info.java @@ -0,0 +1,5 @@ +module proj.b { + requires proj.c; + + exports org.driver; +} \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/Monitor.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/Monitor.java new file mode 100644 index 000000000000..c82098da4792 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/Monitor.java @@ -0,0 +1,9 @@ +package org.driver; + +import org.driver.factory.ApiFactory; + +public class Monitor { + public void exec() { + System.out.println(ApiFactory.create().name()); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/factory/ApiFactory.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/factory/ApiFactory.java new file mode 100644 index 000000000000..0faea578b8ce --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/B/src/org/driver/factory/ApiFactory.java @@ -0,0 +1,10 @@ +package org.driver.factory; + +import org.declaration.API; +import org.declaration.impl.DummyApi; + +public class ApiFactory { + public static API create() { + return new DummyApi(); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/proj-c.iml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/proj-c.iml new file mode 100644 index 000000000000..c90834f2d607 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/proj-c.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/module-info.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/module-info.java new file mode 100644 index 000000000000..b15027071896 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/module-info.java @@ -0,0 +1,4 @@ +module proj.c { + exports org.declaration; + exports org.declaration.impl; +} \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/API.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/API.java new file mode 100644 index 000000000000..bd58712a1b35 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/API.java @@ -0,0 +1,5 @@ +package org.declaration; + +public interface API { + String name(); +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/impl/DummyApi.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/impl/DummyApi.java new file mode 100644 index 000000000000..64bceb0458b6 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/C/src/org/declaration/impl/DummyApi.java @@ -0,0 +1,10 @@ +package org.declaration.impl; + +import org.declaration.API; + +public class DummyApi implements API { + @Override + public String name() { + return "dummy"; + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-a/org/client/Browser.class b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-a/org/client/Browser.class new file mode 100644 index 0000000000000000000000000000000000000000..425a593b2e8cfffb265ee8137ce1cc9ad017d63f GIT binary patch literal 446 zcmZutO-sW-5Ph4bjZLDhHr9`ux9Y*1JV?cZf~Tm5N-y6S)4O828Uw?`%+B= zLno5CxLM3%q3?K{5wjJkglA)}rO7MOE*|BaA&8Vt!z7a;FTxA0p5{UiNo&Ss&d?t` zL{q-xVaD?`92HvT>9F+TI;HO3KV=4Yq!v06SJIgKmFTh2@!?>N1~Q%#Etf)v*NS#f z+Q;5+D<`d5%!2z0d9P=zNBTd+*ETo^&-#l7@y_98_u=PX2qu8%v tAM2F0v4IXTrunoK1H5-w_bW7BVb>Do{vaopylNQ_U2GChn-N;*eFKl$R@wjn literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-b/org/driver/Monitor.class b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-b/org/driver/Monitor.class new file mode 100644 index 0000000000000000000000000000000000000000..4822574a48f8daee04c97b4c738d976bfcb7f8e8 GIT binary patch literal 626 zcmZvZ$44{Bmq0f0eAj_Did>+)emdU$o%*0o+$x!r^Znzg(-U{uWDB>x-ODu6G zdNPNzlT2VC=5s>m%@jtMc|M*KBX=MfJntw?D-nN(IrjU?wEH4Mg0qAiF>uHB#I z)Mz$2`pjgdz>>+)Zqm!8lhK*odIo!Fy9a5{b&Rm+ZguZN7^W9}?@#i68wL~}k$OS; c6&Z#nWP2Es0zh?#sbUXRz&C1yyeW)+0ZZhESO5S3 literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-b/org/driver/factory/ApiFactory.class b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/after/target/production/proj-b/org/driver/factory/ApiFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..c245a6620ae4e396552a19ec77562d0d8f9eea5f GIT binary patch literal 414 zcmZ`#O-sW-5Ph4bNgAuERq-V1t@YrZJSjp^3PMmpDR|tZYu%EMvL=Q8D?Jqy`~m(b zaW=8&#XZctH}l@iu%BOV9{^6Ur7q>R1ky*%th|kEdcT+Hl}9>{WaISXDYp_+^=<3o@+w z|J}jRF|&9gvI)P5rZO&Y2%CPzJPULtT#6nsPMJ||9xcIMt9FZ`QxzTfgxj?MYlMIn f*0DhqV?Ll^=6Ub19+qgl5N4!U`8{F*F$YeojH z;QZ2}{gl+?oW!EUlFa-(eV`O0g8;$=|D>$c6cm!eZYs7HqVsH`%c$|M(+s8y-CD&{%AY>MJ}JXfa_t3^Q} zgW)Kei6_Bxp))?IE2T4<29vU>5_zS}q0Y*7Y&P3);W4yQlf|(2?;(cXI{h}D$)slJ z|Fw+ou5kdHUO~C^7mJXNQ1z+fgp9Ct_y+d67;jK@e?$bt+e^Ml48%LwqH4@XgvM-# T)(e4!wblP+wXw2x7hAn=QRY)n literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/misc.xml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/misc.xml new file mode 100644 index 000000000000..d4ef29a2bedd --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/modules.xml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/modules.xml new file mode 100644 index 000000000000..c3e8a8f7acd7 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/.idea/modules.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/proj-a.iml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/proj-a.iml new file mode 100644 index 000000000000..90ef326fcb8c --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/proj-a.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/src/org/client/Browser.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/src/org/client/Browser.java new file mode 100644 index 000000000000..40528ffd92c8 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/A/src/org/client/Browser.java @@ -0,0 +1,9 @@ +package org.client; + +import org.driver.Monitor; + +public class Browser { + public static void main(String[] args) { + new Monitor().exec(); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/proj-b.iml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/proj-b.iml new file mode 100644 index 000000000000..f15263a7596c --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/proj-b.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/Monitor.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/Monitor.java new file mode 100644 index 000000000000..c82098da4792 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/Monitor.java @@ -0,0 +1,9 @@ +package org.driver; + +import org.driver.factory.ApiFactory; + +public class Monitor { + public void exec() { + System.out.println(ApiFactory.create().name()); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/factory/ApiFactory.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/factory/ApiFactory.java new file mode 100644 index 000000000000..0faea578b8ce --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/B/src/org/driver/factory/ApiFactory.java @@ -0,0 +1,10 @@ +package org.driver.factory; + +import org.declaration.API; +import org.declaration.impl.DummyApi; + +public class ApiFactory { + public static API create() { + return new DummyApi(); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/proj-c.iml b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/proj-c.iml new file mode 100644 index 000000000000..c90834f2d607 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/proj-c.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/API.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/API.java new file mode 100644 index 000000000000..bd58712a1b35 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/API.java @@ -0,0 +1,5 @@ +package org.declaration; + +public interface API { + String name(); +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/impl/DummyApi.java b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/impl/DummyApi.java new file mode 100644 index 000000000000..64bceb0458b6 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/C/src/org/declaration/impl/DummyApi.java @@ -0,0 +1,10 @@ +package org.declaration.impl; + +import org.declaration.API; + +public class DummyApi implements API { + @Override + public String name() { + return "dummy"; + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-a/org/client/Browser.class b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-a/org/client/Browser.class new file mode 100644 index 0000000000000000000000000000000000000000..425a593b2e8cfffb265ee8137ce1cc9ad017d63f GIT binary patch literal 446 zcmZutO-sW-5Ph4bjZLDhHr9`ux9Y*1JV?cZf~Tm5N-y6S)4O828Uw?`%+B= zLno5CxLM3%q3?K{5wjJkglA)}rO7MOE*|BaA&8Vt!z7a;FTxA0p5{UiNo&Ss&d?t` zL{q-xVaD?`92HvT>9F+TI;HO3KV=4Yq!v06SJIgKmFTh2@!?>N1~Q%#Etf)v*NS#f z+Q;5+D<`d5%!2z0d9P=zNBTd+*ETo^&-#l7@y_98_u=PX2qu8%v tAM2F0v4IXTrunoK1H5-w_bW7BVb>Do{vaopylNQ_U2GChn-N;*eFKl$R@wjn literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-b/org/driver/Monitor.class b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-b/org/driver/Monitor.class new file mode 100644 index 0000000000000000000000000000000000000000..4822574a48f8daee04c97b4c738d976bfcb7f8e8 GIT binary patch literal 626 zcmZvZ$44{Bmq0f0eAj_Did>+)emdU$o%*0o+$x!r^Znzg(-U{uWDB>x-ODu6G zdNPNzlT2VC=5s>m%@jtMc|M*KBX=MfJntw?D-nN(IrjU?wEH4Mg0qAiF>uHB#I z)Mz$2`pjgdz>>+)Zqm!8lhK*odIo!Fy9a5{b&Rm+ZguZN7^W9}?@#i68wL~}k$OS; c6&Z#nWP2Es0zh?#sbUXRz&C1yyeW)+0ZZhESO5S3 literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-b/org/driver/factory/ApiFactory.class b/java/java-tests/testData/actions/generateModuleDescriptors/dependentModules/before/target/production/proj-b/org/driver/factory/ApiFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..c245a6620ae4e396552a19ec77562d0d8f9eea5f GIT binary patch literal 414 zcmZ`#O-sW-5Ph4bNgAuERq-V1t@YrZJSjp^3PMmpDR|tZYu%EMvL=Q8D?Jqy`~m(b zaW=8&#XZctH}l@iu%BOV9{^6Ur7q>R1ky*%th|kEdcT+Hl}9>{WaISXDYp_+^=<3o@+w z|J}jRF|&9gvI)P5rZO&Y2%CPzJPULtT#6nsPMJ||9xcIMt9FZ`QxzTfgxj?MYlMIn f*0DhqV?Ll^=6Ub19+qgl5N4!U`8{F*F$YeojH z;QZ2}{gl+?oW!EUlFa-(eV`O0g8;$=|D>$c6cm!eZYs7HqVsH`%c$|M(+s8y-CD&{%AY>MJ}JXfa_t3^Q} zgW)Kei6_Bxp))?IE2T4<29vU>5_zS}q0Y*7Y&P3);W4yQlf|(2?;(cXI{h}D$)slJ z|Fw+ou5kdHUO~C^7mJXNQ1z+fgp9Ct_y+d67;jK@e?$bt+e^Ml48%LwqH4@XgvM-# T)(e4!wblP+wXw2x7hAn=QRY)n literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/misc.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/misc.xml new file mode 100644 index 000000000000..d4ef29a2bedd --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/modules.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/modules.xml new file mode 100644 index 000000000000..d7bc4c246dfb --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/proj-a.iml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/proj-a.iml new file mode 100644 index 000000000000..c90834f2d607 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/proj-a.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/module-info.java b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/module-info.java new file mode 100644 index 000000000000..7674163c3e55 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/module-info.java @@ -0,0 +1,2 @@ +module proj.a { +} \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/org/client/Main.java b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/org/client/Main.java new file mode 100644 index 000000000000..436b2e01e5d5 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/src/org/client/Main.java @@ -0,0 +1,7 @@ +package org.client; + +public class Main { + public static void main(String[] args) { + System.out.println("main"); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/target/production/proj-a/org/client/Main.class b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/after/target/production/proj-a/org/client/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..d4c51c0af50a3694685dc0e1c82ad10709855b66 GIT binary patch literal 523 zcmZuuxlY4C5Ph4&j*ZDl!hNI*6u3eZK{QBI=8%HYP;HE5Hu8ZS2Z_&u0wfAPfR92v zJ4gYPEoOG!%)B?V`}y_$0pJK-6BvpRKJ0X#sN(PZQTWSDCVrF&<_l7Iai}Y+BgDwvHVOyV&Ef z|I`KQbIGgG*mKiA(BNs3dLcKCr%beG^QqXr=5Q%T^km2dS~$BYd+4&h`pfDEWV;N XCoq{JD|NJABnIke5a++q7SQ?zJ+*4} literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/misc.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/misc.xml new file mode 100644 index 000000000000..d4ef29a2bedd --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/modules.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/modules.xml new file mode 100644 index 000000000000..d7bc4c246dfb --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/proj-a.iml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/proj-a.iml new file mode 100644 index 000000000000..c90834f2d607 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/proj-a.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/src/org/client/Main.java b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/src/org/client/Main.java new file mode 100644 index 000000000000..436b2e01e5d5 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/src/org/client/Main.java @@ -0,0 +1,7 @@ +package org.client; + +public class Main { + public static void main(String[] args) { + System.out.println("main"); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/target/production/proj-a/org/client/Main.class b/java/java-tests/testData/actions/generateModuleDescriptors/singleModule/before/target/production/proj-a/org/client/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..d4c51c0af50a3694685dc0e1c82ad10709855b66 GIT binary patch literal 523 zcmZuuxlY4C5Ph4&j*ZDl!hNI*6u3eZK{QBI=8%HYP;HE5Hu8ZS2Z_&u0wfAPfR92v zJ4gYPEoOG!%)B?V`}y_$0pJK-6BvpRKJ0X#sN(PZQTWSDCVrF&<_l7Iai}Y+BgDwvHVOyV&Ef z|I`KQbIGgG*mKiA(BNs3dLcKCr%beG^QqXr=5Q%T^km2dS~$BYd+4&h`pfDEWV;N XCoq{JD|NJABnIke5a++q7SQ?zJ+*4} literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/annotations.jar b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/annotations.jar new file mode 100644 index 0000000000000000000000000000000000000000..993cf004e71ced64a65d1e08749bdfdd31af8130 GIT binary patch literal 2080 zcmah~U1$_n6h5;*Np`cFCT5M>^v9TLtkvB~#eya@bu_!UWOuXOootX|!(?-_Ogfp7 zotYSolxk_yK=L9YC~AF(6e^{qtzv|V_N}4NP-ra*r7tNI8u7&_TBPS@vOD`5FWful z&V1+GGvA!=OsvOha{|-={2_k37xIP!Y!C_XoG%m&vd`uLVg?i;AE?v)y)RulzbBV05T3?z7eB-qD0z&bZDPUzIfYk{#nWB_a)^oadKx%{TX;M zuFIM@N|K@~4obufpfa#2?+o+(*ls1Ij}loULwICMc}$#Wh(I{SMi}FBkH%1MH0%5#5VqBcVn}Ik3b>ZIq zTzDYK#Y5b_Z~$MG)`t1z&9_zARlXRgHyQ6893d$rccXdBbYV>r+Zd$Zg42qhlCd$U z6+7;#aA#Ga8XsY);_3ht7iz=`wRm+Q#74jkb?^c;-=n*FXrRkFx-`*QWrPQ zbTx*3O*Q2D=~nmVMCiffnQOQ2EFU>yujzXCyMw=XG++B=;rJEb#Nwryt6#mPy>a#F zJBjb>X?0cKL= zn&(PrEW0J{3p9;ZTG@j(Q)5t%pU^B6SUv^Cr_ttW4C?z3%|c&OX|&ZA=1|;hvyo;` z_>h*$ak5QurS;OFS&~boWsnR=#VzhM>N-bqP8@waQe0MKmE(FKKki>;<5JPB6}gh+ hvXN<7`0+ + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/modules.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/modules.xml new file mode 100644 index 000000000000..5fe87d7e413a --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/maven-project.iml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/maven-project.iml new file mode 100644 index 000000000000..4d5d3462693e --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/maven-project.iml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/pom.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/pom.xml new file mode 100644 index 000000000000..b37d40d12ccd --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + + org.jetbrains + client + 1.0 + + + 9 + 9 + + + + + org.jetbrains + annotations + 24.1.0 + + + diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/module-info.java b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/module-info.java new file mode 100644 index 000000000000..2921a4bcc1f4 --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/module-info.java @@ -0,0 +1,3 @@ +module maven.project { + requires org.jetbrains.annotations; +} \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/org/client/Main.java b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/org/client/Main.java new file mode 100644 index 000000000000..2f0b59c9a27f --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/src/main/java/org/client/Main.java @@ -0,0 +1,9 @@ +package org.client; + +import org.jetbrains.annotations.NotNull; + +public class Main { + public static void main(@NotNull String[] args) { + System.out.println("main"); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/target/classes/org/client/Main.class b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/after/target/classes/org/client/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..4888fe134337c4b908f93d3bdb67e5a15b173bc8 GIT binary patch literal 1018 zcmZuvT~8B16g|V1?sh5AE`nbu3$)UruqvW47$PwmNeU9zkf0A{T8BEgAIz49Md&;ua6Kc_Oua;>@Y{GG!(V~_81FW^zz^Hn0F_DYtBCvEyVcFr@y)XQ$9WGL37eVIy~@1P^r zq9|5e$vC2avsubLp_&QhNj=_s^fqI)*$o0JqH-2zizhr3N+f+?wjXzsmUt#L(Sjzh zsB135gk|D-5mRtYOcybOS<>bVS%y-N;fv;;XsJGze~>B>lE8779>$O5kg>N#S}0OP z@Q_L!%P{)g3}#0M1tjEn?R*`}l}aTMojA!jlX080udUa&i>RP#V-PnOR@ahtH>B>k zyK&+^J`u?6oT}l@Rns{)-gT?#Vl{QcZmL`o+ieOrA|)- z*gZU_%6~h2EYC{)e=bEV!n3ges(+@Z=Xwx`HV;ngfBLZ{I(h_5+|})wwXuYI48y+S ztq&W#lMN=OiFTeQA22{7!lJ!EmPaR}b8!9;>=RuEVAGz@oH-29y?7iz=P+3Xj9`>N z^ylXktv{FNf59}4F!vb)j`0OK4P@Ycwlgb3v?$itk{z*Zg&~e%a GF!2{_tL~Wq literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/annotations.jar b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/annotations.jar new file mode 100644 index 0000000000000000000000000000000000000000..993cf004e71ced64a65d1e08749bdfdd31af8130 GIT binary patch literal 2080 zcmah~U1$_n6h5;*Np`cFCT5M>^v9TLtkvB~#eya@bu_!UWOuXOootX|!(?-_Ogfp7 zotYSolxk_yK=L9YC~AF(6e^{qtzv|V_N}4NP-ra*r7tNI8u7&_TBPS@vOD`5FWful z&V1+GGvA!=OsvOha{|-={2_k37xIP!Y!C_XoG%m&vd`uLVg?i;AE?v)y)RulzbBV05T3?z7eB-qD0z&bZDPUzIfYk{#nWB_a)^oadKx%{TX;M zuFIM@N|K@~4obufpfa#2?+o+(*ls1Ij}loULwICMc}$#Wh(I{SMi}FBkH%1MH0%5#5VqBcVn}Ik3b>ZIq zTzDYK#Y5b_Z~$MG)`t1z&9_zARlXRgHyQ6893d$rccXdBbYV>r+Zd$Zg42qhlCd$U z6+7;#aA#Ga8XsY);_3ht7iz=`wRm+Q#74jkb?^c;-=n*FXrRkFx-`*QWrPQ zbTx*3O*Q2D=~nmVMCiffnQOQ2EFU>yujzXCyMw=XG++B=;rJEb#Nwryt6#mPy>a#F zJBjb>X?0cKL= zn&(PrEW0J{3p9;ZTG@j(Q)5t%pU^B6SUv^Cr_ttW4C?z3%|c&OX|&ZA=1|;hvyo;` z_>h*$ak5QurS;OFS&~boWsnR=#VzhM>N-bqP8@waQe0MKmE(FKKki>;<5JPB6}gh+ hvXN<7`0+ + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/modules.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/modules.xml new file mode 100644 index 000000000000..5fe87d7e413a --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/maven-project.iml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/maven-project.iml new file mode 100644 index 000000000000..4d5d3462693e --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/maven-project.iml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/pom.xml b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/pom.xml new file mode 100644 index 000000000000..b37d40d12ccd --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + + org.jetbrains + client + 1.0 + + + 9 + 9 + + + + + org.jetbrains + annotations + 24.1.0 + + + diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/src/main/java/org/client/Main.java b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/src/main/java/org/client/Main.java new file mode 100644 index 000000000000..2f0b59c9a27f --- /dev/null +++ b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/src/main/java/org/client/Main.java @@ -0,0 +1,9 @@ +package org.client; + +import org.jetbrains.annotations.NotNull; + +public class Main { + public static void main(@NotNull String[] args) { + System.out.println("main"); + } +} diff --git a/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/target/classes/org/client/Main.class b/java/java-tests/testData/actions/generateModuleDescriptors/singleModuleWithDependency/before/target/classes/org/client/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..4888fe134337c4b908f93d3bdb67e5a15b173bc8 GIT binary patch literal 1018 zcmZuvT~8B16g|V1?sh5AE`nbu3$)UruqvW47$PwmNeU9zkf0A{T8BEgAIz49Md&;ua6Kc_Oua;>@Y{GG!(V~_81FW^zz^Hn0F_DYtBCvEyVcFr@y)XQ$9WGL37eVIy~@1P^r zq9|5e$vC2avsubLp_&QhNj=_s^fqI)*$o0JqH-2zizhr3N+f+?wjXzsmUt#L(Sjzh zsB135gk|D-5mRtYOcybOS<>bVS%y-N;fv;;XsJGze~>B>lE8779>$O5kg>N#S}0OP z@Q_L!%P{)g3}#0M1tjEn?R*`}l}aTMojA!jlX080udUa&i>RP#V-PnOR@ahtH>B>k zyK&+^J`u?6oT}l@Rns{)-gT?#Vl{QcZmL`o+ieOrA|)- z*gZU_%6~h2EYC{)e=bEV!n3ges(+@Z=Xwx`HV;ngfBLZ{I(h_5+|})wwXuYI48y+S ztq&W#lMN=OiFTeQA22{7!lJ!EmPaR}b8!9;>=RuEVAGz@oH-29y?7iz=P+3Xj9`>N z^ylXktv{FNf59}4F!vb)j`0OK4P@Ycwlgb3v?$itk{z*Zg&~e%a GF!2{_tL~Wq literal 0 HcmV?d00001 diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/Java9GenerateModuleDescriptorsActionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/Java9GenerateModuleDescriptorsActionTest.java new file mode 100644 index 000000000000..6e71ae4fb8a8 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/Java9GenerateModuleDescriptorsActionTest.java @@ -0,0 +1,255 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.codeInsight.actions; + +import com.intellij.JavaTestUtil; +import com.intellij.compiler.CompilerManagerImpl; +import com.intellij.conversion.ModuleSettings; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.actionSystem.ActionManager; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.application.WriteAction; +import com.intellij.openapi.compiler.CompileScope; +import com.intellij.openapi.compiler.CompilerManager; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.module.ModuleWithNameAlreadyExists; +import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.DumbServiceImpl; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.impl.ProjectImpl; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.roots.*; +import com.intellij.openapi.util.JDOMUtil; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.pointers.VirtualFilePointer; +import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; +import com.intellij.pom.java.LanguageLevel; +import com.intellij.refactoring.LightMultiFileTestCase; +import com.intellij.testFramework.*; +import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor; +import kotlinx.coroutines.CoroutineScopeKt; +import kotlinx.coroutines.JobKt; +import org.jdom.Element; +import org.jdom.JDOMException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.model.java.JavaSourceRootType; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; +import org.jetbrains.jps.model.serialization.JDomSerializationUtil; +import org.jetbrains.jps.model.serialization.JpsProjectLoader; + +import java.io.IOException; +import java.net.URL; +import java.nio.file.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import static org.jetbrains.jps.model.serialization.module.JpsModuleRootModelSerializer.*; + +public class Java9GenerateModuleDescriptorsActionTest extends LightMultiFileTestCase { + @Override + protected @NotNull LightProjectDescriptor getProjectDescriptor() { + return new FakeModuleDescriptor(Paths.get(getTestDataPath() + "/" + getTestName(true))); + } + + @Override + protected String getTestDataPath() { + return JavaTestUtil.getJavaTestDataPath() + "/actions/generateModuleDescriptors"; + } + + public void testSingleModule() throws IOException { + performReformatAction(); + } + + public void testSingleModuleWithDependency() throws IOException { + performReformatAction(); + } + + public void testDependentModules() throws IOException { + performReformatAction(); + } + + protected void performReformatAction() throws IOException { + // INIT + final AnAction action = ActionManager.getInstance().getAction("GenerateModuleDescriptors"); + final AnActionEvent event = AnActionEvent.createFromAnAction(action, null, "", dataId -> { + if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) return Collections.emptyList(); + if (CommonDataKeys.PROJECT.is(dataId)) return getProject(); + return null; + }); + + // EXEC + action.actionPerformed(event); + + // CHECK + final FakeModuleDescriptor descriptor = (FakeModuleDescriptor)getProjectDescriptor(); + + PlatformTestUtil.assertDirectoriesEqual(LocalFileSystem.getInstance().findFileByNioFile(descriptor.myAfterPath), + LocalFileSystem.getInstance().findFileByPath(getProject().getBasePath())); + } + + private static class FakeModuleDescriptor extends DefaultLightProjectDescriptor { + private final Path myBeforePath; + private final Path myAfterPath; + private final Path myProjectPath; + + FakeModuleDescriptor(@NotNull Path path) { + myBeforePath = path.resolve("before"); + myAfterPath = path.resolve("after"); + myProjectPath = TemporaryDirectory.generateTemporaryPath(ProjectImpl.LIGHT_PROJECT_NAME); + } + + @Override + public @NotNull Path getProjectPath() { + return myProjectPath; + } + + @Override + public Sdk getSdk() { + return IdeaTestUtil.getMockJdk11(); // TODO + } + + @Override + public void setUpProject(@NotNull Project project, @NotNull SetupHandler handler) throws Exception { + WriteAction.run(() -> { + final Path basePath = Paths.get(project.getBasePath()); + FileUtil.copyDir(myBeforePath.toFile(), basePath.toFile()); + VfsUtil.markDirtyAndRefresh(false, true, true, basePath.toFile()); + + final Element miscXml = JDomSerializationUtil.findComponent(JDOMUtil.load(basePath.resolve(".idea").resolve("misc.xml")), + "ProjectRootManager"); + final String outputUrl = miscXml.getChild("output").getAttributeValue("url").replace("$PROJECT_DIR$", basePath.toString()); + final CompilerProjectExtension compilerProjectExtension = CompilerProjectExtension.getInstance(project); + + compilerProjectExtension.setCompilerOutputUrl(outputUrl); + final VirtualFilePointer pointer = VirtualFilePointerManager.getInstance() + .create(outputUrl, (Disposable)compilerProjectExtension, null); + compilerProjectExtension.setCompilerOutputPointer(pointer); + //CompilerModuleExtension + //ModuleElementsEditor + ServiceContainerUtil.replaceService(project, DumbService.class, + new DumbServiceImpl(project, CoroutineScopeKt.CoroutineScope(JobKt.Job(null))) { + @Override + public void smartInvokeLater(@NotNull Runnable runnable) { + runnable.run(); + } + }, project); + ServiceContainerUtil.replaceService(project, CompilerManager.class, new CompilerManagerImpl(project) { + @Override + public boolean isUpToDate(@NotNull CompileScope scope) { + return true; + } + }, project); + + final Element modulesXml = JDomSerializationUtil.findComponent(JDOMUtil.load(basePath.resolve(".idea").resolve("modules.xml")), + JpsProjectLoader.MODULE_MANAGER_COMPONENT); + final Element modulesElement = modulesXml.getChild(JpsProjectLoader.MODULES_TAG); + final List moduleElements = modulesElement.getChildren(JpsProjectLoader.MODULE_TAG); + for (Element moduleAttr : moduleElements) { + Path modulePath = Paths.get(moduleAttr.getAttributeValue(JpsProjectLoader.FILE_PATH_ATTRIBUTE) + .replace("$PROJECT_DIR$", basePath.toString())); + final ModuleDescriptor descriptor = new ModuleDescriptor(modulePath); + final Module module = makeModule(project, descriptor); + handler.moduleCreated(module); + final VirtualFile vSrc = VirtualFileManager.getInstance().refreshAndFindFileByNioPath(descriptor.src()); + handler.sourceRootCreated(vSrc); + createContentEntry(module, vSrc); + } + }); + } + + @NotNull + private Module makeModule(@NotNull Project project, @NotNull ModuleDescriptor descriptor) + throws ModuleWithNameAlreadyExists, IOException { + final Module module; + Path iml = getIml(descriptor.basePath); + if (iml != null && Files.exists(iml)) { + module = ModuleManager.getInstance(project).loadModule(iml); + } + else { + iml = descriptor.basePath.resolve(descriptor.basePath.getFileName() + ".iml"); + module = createModule(project, iml); + } + ModuleRootModificationUtil.updateModel(module, model -> configureModule(module, model, descriptor)); + return module; + } + + private void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @NotNull ModuleDescriptor descriptor) { + model.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(descriptor.languageLevel()); + model.setSdk(IdeaTestUtil.getMockJdk(descriptor.languageLevel().toJavaVersion())); + final BiConsumer> register = (path, type) -> { + if (path == null) return; + final VirtualFile src = Files.exists(path) + ? VirtualFileManager.getInstance().refreshAndFindFileByNioPath(path) + : createSourceRoot(module, path.toString()); + registerSourceRoot(module.getProject(), src); + model.addContentEntry(src).addSourceFolder(src, type); + }; + register.accept(descriptor.src(), JavaSourceRootType.SOURCE); + register.accept(descriptor.testSrc(), JavaSourceRootType.TEST_SOURCE); + //JavaResourceRootType.RESOURCE + //JavaResourceRootType.TEST_RESOURCE + + // Maven + final Path mavenOutputPath = Paths.get(module.getModuleFilePath()).getParent().resolve("target").resolve("classes"); + if (Files.exists(mavenOutputPath)) { + final CompilerModuleExtension compiler = model.getModuleExtension(CompilerModuleExtension.class); + compiler.setCompilerOutputPath(mavenOutputPath.toString()); + compiler.inheritCompilerOutputPath(false); + } + } + + private record ModuleDescriptor(@NotNull String name, @NotNull Path basePath, @NotNull Path src, @Nullable Path testSrc, + @NotNull LanguageLevel languageLevel) { + @SuppressWarnings("SwitchStatementWithTooFewBranches") + private ModuleDescriptor(@NotNull Path iml) throws IOException, JDOMException { + this(iml.getFileName().toString().replace(".iml", ""), iml.getParent(), + Paths.get(new URL(getData(iml, List.of(CONTENT_TAG, SOURCE_FOLDER_TAG), e -> switch (e.getName()) { + case SOURCE_FOLDER_TAG -> e.getAttributeValue(IS_TEST_SOURCE_ATTRIBUTE).equals("false"); + default -> true; + }).stream().findFirst().orElseThrow().getAttributeValue(URL_ATTRIBUTE) + .replace("$MODULE_DIR$", iml.getParent().toString())).getPath()), null, LanguageLevel.JDK_11); + } + + private static List getData(@NotNull Path iml, List tags, @NotNull Predicate condition) + throws IOException, JDOMException { + final Element component = JDomSerializationUtil.findComponent(JDOMUtil.load(iml), ModuleSettings.MODULE_ROOT_MANAGER_COMPONENT); + List elements = List.of(component); + for (String tag : tags) { + List newElements = new ArrayList<>(); + for (Element element : elements) { + newElements.addAll(element.getChildren(tag).stream().filter(condition).toList()); + } + elements = newElements; + } + return elements; + } + } + } + + @Nullable + private static Path getIml(@NotNull Path path) { + return findFiles(path, "glob:**/*.iml").stream().findFirst().orElse(null); + } + + @NotNull + private static List findFiles(@NotNull Path path, @NotNull String mask) { + final PathMatcher matcher = FileSystems.getDefault().getPathMatcher(mask); + try (final Stream stream = Files.walk(path)) { + return stream.filter(matcher::matches).sorted().toList(); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java index 78f05a7f9047..26f0e16a9a43 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java @@ -1,11 +1,10 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.testFramework; import com.intellij.application.options.CodeStyle; import com.intellij.codeInspection.InspectionProfileEntry; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ex.InspectionToolWrapper; -import com.intellij.ide.highlighter.ProjectFileType; import com.intellij.ide.startup.StartupManagerEx; import com.intellij.idea.IdeaLogger; import com.intellij.lang.Language; @@ -171,7 +170,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da } ApplicationManager.getApplication().runWriteAction(() -> cleanPersistedVFSContent()); - Path tempDirectory = TemporaryDirectory.generateTemporaryPath(ProjectImpl.LIGHT_PROJECT_NAME + ProjectFileType.DOT_DEFAULT_EXTENSION); + Path tempDirectory = descriptor.getProjectPath(); ourProject = Objects.requireNonNull(ProjectManagerEx.getInstanceEx().newProject(tempDirectory, descriptor.getOpenProjectOptions())); HeavyPlatformTestCase.synchronizeTempDirVfs(tempDirectory); ourPsiManager = null; diff --git a/platform/testFramework/src/com/intellij/testFramework/LightProjectDescriptor.java b/platform/testFramework/src/com/intellij/testFramework/LightProjectDescriptor.java index 0902ce988c68..4f7101ef64ea 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightProjectDescriptor.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightProjectDescriptor.java @@ -1,6 +1,7 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.testFramework; +import com.intellij.ide.highlighter.ProjectFileType; import com.intellij.ide.impl.OpenProjectTask; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.WriteAction; @@ -8,6 +9,7 @@ import com.intellij.openapi.module.EmptyModuleType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.impl.ProjectImpl; import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ContentEntry; @@ -35,6 +37,11 @@ public class LightProjectDescriptor { public static final LightProjectDescriptor EMPTY_PROJECT_DESCRIPTOR = new LightProjectDescriptor(); public static final String TEST_MODULE_NAME = "light_idea_test_case"; + private final Path myProjectPath; + + public LightProjectDescriptor() { + myProjectPath = TemporaryDirectory.generateTemporaryPath(ProjectImpl.LIGHT_PROJECT_NAME + ProjectFileType.DOT_DEFAULT_EXTENSION); + } public void setUpProject(@NotNull Project project, @NotNull SetupHandler handler) throws Exception { WriteAction.run(() -> { @@ -176,6 +183,11 @@ public class LightProjectDescriptor { } } + @NotNull + public Path getProjectPath() { + return myProjectPath; + } + protected void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @NotNull ContentEntry contentEntry) { } public interface SetupHandler {