mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[platform] move createMockJdk from JavaSdkImpl to IdeaTestUtil
The method is used in tests only so it should live in production class. GitOrigin-RevId: 0780fa49cc95bd290fcfe49c729a0064226b3116
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b6a0a067fb
commit
867b20e082
@@ -32,12 +32,11 @@ import com.intellij.openapi.vfs.newvfs.events.VFileEvent;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.lang.JavaVersion;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.jetbrains.jps.model.java.JdkVersionDetector;
|
||||
import org.jetbrains.jps.model.java.impl.JavaSdkUtil;
|
||||
|
||||
@@ -399,44 +398,8 @@ public final class JavaSdkImpl extends JavaSdk {
|
||||
return jdk;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@TestOnly
|
||||
public Sdk createMockJdk(@NotNull String jdkName, @NotNull String home, boolean isJre) {
|
||||
String homePath = PathUtil.toSystemIndependentName(home);
|
||||
File jdkHomeFile = new File(homePath);
|
||||
|
||||
MultiMap<OrderRootType, VirtualFile> roots = MultiMap.create();
|
||||
SdkModificator sdkModificator = new SdkModificator() {
|
||||
@NotNull
|
||||
@Override public String getName() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setName(@NotNull String name) { throw new UnsupportedOperationException(); }
|
||||
@Override public String getHomePath() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setHomePath(String path) { throw new UnsupportedOperationException(); }
|
||||
@Override public String getVersionString() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setVersionString(String versionString) { throw new UnsupportedOperationException(); }
|
||||
@Override public SdkAdditionalData getSdkAdditionalData() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setSdkAdditionalData(SdkAdditionalData data) { throw new UnsupportedOperationException(); }
|
||||
@Override public VirtualFile @NotNull [] getRoots(@NotNull OrderRootType rootType) { return roots.get(rootType).toArray(VirtualFile.EMPTY_ARRAY); }
|
||||
@Override public void removeRoot(@NotNull VirtualFile root, @NotNull OrderRootType rootType) { throw new UnsupportedOperationException(); }
|
||||
@Override public void removeRoots(@NotNull OrderRootType rootType) { throw new UnsupportedOperationException(); }
|
||||
@Override public void removeAllRoots() { throw new UnsupportedOperationException(); }
|
||||
@Override public void commitChanges() { throw new UnsupportedOperationException(); }
|
||||
@Override public boolean isWritable() { throw new UnsupportedOperationException(); }
|
||||
|
||||
@Override
|
||||
public void addRoot(@NotNull VirtualFile root, @NotNull OrderRootType rootType) {
|
||||
roots.putValue(rootType, root);
|
||||
}
|
||||
};
|
||||
|
||||
addClasses(jdkHomeFile, sdkModificator, isJre);
|
||||
addSources(jdkHomeFile, sdkModificator);
|
||||
attachJdkAnnotations(sdkModificator);
|
||||
|
||||
return new MockSdk(jdkName, homePath, jdkName, roots, this);
|
||||
}
|
||||
|
||||
private static void addClasses(@NotNull File file, @NotNull SdkModificator sdkModificator, boolean isJre) {
|
||||
@ApiStatus.Internal
|
||||
public static void addClasses(@NotNull File file, @NotNull SdkModificator sdkModificator, boolean isJre) {
|
||||
for (String url : findClasses(file, isJre)) {
|
||||
sdkModificator.addRoot(url, OrderRootType.CLASSES);
|
||||
}
|
||||
@@ -504,8 +467,8 @@ public final class JavaSdkImpl extends JavaSdk {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private static void addSources(@NotNull File jdkHome, @NotNull SdkModificator sdkModificator) {
|
||||
@ApiStatus.Internal
|
||||
public static void addSources(@NotNull File jdkHome, @NotNull SdkModificator sdkModificator) {
|
||||
VirtualFile jdkSrc = findSources(jdkHome, "src");
|
||||
if (jdkSrc != null) {
|
||||
if (jdkSrc.findChild("java.base") != null) {
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ package com.intellij.java.codeInsight.daemon
|
||||
import com.intellij.codeInspection.javaDoc.JavadocHtmlLintInspection
|
||||
import com.intellij.openapi.projectRoots.JavaSdk
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl
|
||||
import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor
|
||||
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
|
||||
@@ -15,7 +15,7 @@ private val DESCRIPTOR = object : DefaultLightProjectDescriptor() {
|
||||
override fun getSdk(): Sdk? {
|
||||
val jreHome = File(System.getProperty("java.home"))
|
||||
val jdkHome = if (jreHome.name == "jre") jreHome.parentFile else jreHome
|
||||
return (JavaSdk.getInstance() as JavaSdkImpl).createMockJdk("java version \"{${JavaVersion.current()}}\"", jdkHome.path, false)
|
||||
return IdeaTestUtil.createMockJdk("java version \"{${JavaVersion.current()}}\"", jdkHome.path)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.projectRoots.*;
|
||||
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
|
||||
import com.intellij.openapi.projectRoots.impl.MockSdk;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
@@ -18,6 +19,7 @@ import com.intellij.util.ArrayUtilRt;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.lang.JavaVersion;
|
||||
import org.jetbrains.annotations.*;
|
||||
import org.junit.Assert;
|
||||
@@ -76,13 +78,49 @@ public final class IdeaTestUtil {
|
||||
return createMockJdk("java " + version, path);
|
||||
}
|
||||
|
||||
private static @NotNull Sdk createMockJdk(@NotNull String name, @NotNull String path) {
|
||||
public static @NotNull Sdk createMockJdk(@NotNull String name, @NotNull String path) {
|
||||
return createMockJdk(name, path, false);
|
||||
}
|
||||
|
||||
public static @NotNull Sdk createMockJdk(@NotNull String name, @NotNull String path, boolean isJre) {
|
||||
JavaSdk javaSdk = JavaSdk.getInstance();
|
||||
if (javaSdk == null) {
|
||||
throw new AssertionError("The test uses classes from Java plugin but Java plugin wasn't loaded; make sure that Java plugin " +
|
||||
"classes are included into classpath and that the plugin isn't disabled by using 'idea.load.plugins', 'idea.load.plugins.id', 'idea.load.plugins.category' system properties");
|
||||
}
|
||||
return ((JavaSdkImpl)javaSdk).createMockJdk(name, path, false);
|
||||
|
||||
String homePath = PathUtil.toSystemIndependentName(path);
|
||||
File jdkHomeFile = new File(homePath);
|
||||
|
||||
MultiMap<OrderRootType, VirtualFile> roots = MultiMap.create();
|
||||
SdkModificator sdkModificator = new SdkModificator() {
|
||||
@NotNull
|
||||
@Override public String getName() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setName(@NotNull String name1) { throw new UnsupportedOperationException(); }
|
||||
@Override public String getHomePath() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setHomePath(String path1) { throw new UnsupportedOperationException(); }
|
||||
@Override public String getVersionString() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setVersionString(String versionString) { throw new UnsupportedOperationException(); }
|
||||
@Override public SdkAdditionalData getSdkAdditionalData() { throw new UnsupportedOperationException(); }
|
||||
@Override public void setSdkAdditionalData(SdkAdditionalData data) { throw new UnsupportedOperationException(); }
|
||||
@Override public VirtualFile @NotNull [] getRoots(@NotNull OrderRootType rootType) { return roots.get(rootType).toArray(VirtualFile.EMPTY_ARRAY); }
|
||||
@Override public void removeRoot(@NotNull VirtualFile root, @NotNull OrderRootType rootType) { throw new UnsupportedOperationException(); }
|
||||
@Override public void removeRoots(@NotNull OrderRootType rootType) { throw new UnsupportedOperationException(); }
|
||||
@Override public void removeAllRoots() { throw new UnsupportedOperationException(); }
|
||||
@Override public void commitChanges() { throw new UnsupportedOperationException(); }
|
||||
@Override public boolean isWritable() { throw new UnsupportedOperationException(); }
|
||||
|
||||
@Override
|
||||
public void addRoot(@NotNull VirtualFile root, @NotNull OrderRootType rootType) {
|
||||
roots.putValue(rootType, root);
|
||||
}
|
||||
};
|
||||
|
||||
JavaSdkImpl.addClasses(jdkHomeFile, sdkModificator, isJre);
|
||||
JavaSdkImpl.addSources(jdkHomeFile, sdkModificator);
|
||||
JavaSdkImpl.attachJdkAnnotations(sdkModificator);
|
||||
|
||||
return new MockSdk(name, homePath, name, roots, javaSdk);
|
||||
}
|
||||
|
||||
public static @NotNull Sdk getMockJdk14() {
|
||||
|
||||
+1
-1
@@ -158,7 +158,7 @@ class ExternalSystemJdkUtilTest : UsefulTestCase() {
|
||||
val path = jdkDir.absolutePath
|
||||
assertThat(isValidJdk(path)).`as`("Mock JDK at $path is expected to pass validation by com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil.isValidJdk() " +
|
||||
"Please, check validation code and update mock accordingly").isTrue()
|
||||
return (JavaSdkImpl.getInstance() as JavaSdkImpl).createMockJdk(jdkVersionStr, path, false)
|
||||
return IdeaTestUtil.createMockJdk(jdkVersionStr, path)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -1,9 +1,7 @@
|
||||
package org.jetbrains.plugins.javaFX.fxml;
|
||||
|
||||
import com.intellij.java.codeInsight.daemon.impl.SdkSetupNotificationTestBase;
|
||||
import com.intellij.openapi.projectRoots.JavaSdk;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
||||
import com.intellij.testFramework.IdeaTestUtil;
|
||||
import com.intellij.ui.EditorNotificationPanel;
|
||||
@@ -38,6 +36,6 @@ public class JavaFxSdkSetupNotificationTest extends SdkSetupNotificationTestBase
|
||||
|
||||
@NotNull
|
||||
private static Sdk getTestJdk() {
|
||||
return ((JavaSdkImpl)JavaSdk.getInstance()).createMockJdk("testJdk", System.getProperty("java.home"), true);
|
||||
return IdeaTestUtil.createMockJdk("testJdk", System.getProperty("java.home"), true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user