mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-218412 ModifiableRootModel.setSdk throws IllegalStateException if SDK id doesn't exist in the list of SDKs
GitOrigin-RevId: e0127f45b5b28928b41c3746a4d6536a9ad3ca32
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e99ab1cec5
commit
7d2c397439
+18
@@ -179,6 +179,7 @@ public class UnknownSdkTrackerTest extends JavaCodeInsightFixtureTestCase {
|
||||
|
||||
private class SdkTestCases {
|
||||
final Sdk broken = ProjectJdkTable.getInstance().createSdk("broken-sdk-123", JavaSdk.getInstance());
|
||||
final Sdk jdkNotInJdkTable = ProjectJdkTable.getInstance().createSdk("not-in-jdk-table-123", JavaSdk.getInstance());
|
||||
final Sdk valid = IdeaTestUtil.getMockJdk18();
|
||||
|
||||
private SdkTestCases() {
|
||||
@@ -211,6 +212,23 @@ public class UnknownSdkTrackerTest extends JavaCodeInsightFixtureTestCase {
|
||||
};
|
||||
}
|
||||
|
||||
public void testMissingModuleSdk() {
|
||||
new SdkTestCases() {
|
||||
{
|
||||
WriteAction.run(() -> {
|
||||
ModifiableRootModel m = ModuleRootManager.getInstance(getModule()).getModifiableModel();
|
||||
m.setSdk(jdkNotInJdkTable);
|
||||
m.commit();
|
||||
|
||||
ProjectRootManager.getInstance(getProject()).setProjectSdk(valid);
|
||||
});
|
||||
|
||||
final List<String> panel = detectMissingSdks();
|
||||
assertThat(panel).hasSize(1).first().asString().startsWith("SdkFixInfo:SdkFixInfo {MissingSdkInfo(mySdkName=" + jdkNotInJdkTable.getName());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void testValidProjectSdk() {
|
||||
new SdkTestCases() {
|
||||
{
|
||||
|
||||
+3
-2
@@ -10,6 +10,7 @@ import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.*
|
||||
import com.intellij.openapi.roots.DependencyScope
|
||||
import com.intellij.openapi.roots.impl.ModuleOrderEnumerator
|
||||
import com.intellij.openapi.roots.impl.RootConfigurationAccessor
|
||||
import com.intellij.openapi.roots.impl.RootModelBase.CollectDependentModules
|
||||
@@ -24,7 +25,6 @@ import com.intellij.platform.workspace.jps.CustomModuleEntitySource
|
||||
import com.intellij.platform.workspace.jps.JpsFileDependentEntitySource
|
||||
import com.intellij.platform.workspace.jps.JpsFileEntitySource
|
||||
import com.intellij.platform.workspace.jps.entities.*
|
||||
import com.intellij.platform.workspace.jps.entities.DependencyScope as EntitiesDependencyScope
|
||||
import com.intellij.platform.workspace.jps.serialization.impl.LibraryNameGenerator
|
||||
import com.intellij.platform.workspace.storage.CachedValue
|
||||
import com.intellij.platform.workspace.storage.EntitySource
|
||||
@@ -46,6 +46,7 @@ import org.jdom.Element
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRoot
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import com.intellij.platform.workspace.jps.entities.DependencyScope as EntitiesDependencyScope
|
||||
|
||||
internal class ModifiableRootModelBridgeImpl(
|
||||
diff: MutableEntityStorage,
|
||||
@@ -610,7 +611,7 @@ internal class ModifiableRootModelBridgeImpl(
|
||||
}
|
||||
else {
|
||||
if (ModifiableRootModelBridge.findSdk(project, jdk.name, jdk.sdkType.name) == null) {
|
||||
error("setSdk: sdk '${jdk.name}' type '${jdk.sdkType.name}' is not registered in ProjectJdkTable")
|
||||
LOG.info("setSdk: sdk '${jdk.name}' type '${jdk.sdkType.name}' is not registered in ProjectJdkTable")
|
||||
}
|
||||
setInvalidSdk(jdk.name, jdk.sdkType.name)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user