mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
Fix tests: do not create SDK 2 times
GitOrigin-RevId: cfc0f421a9fea2df061b97a5f53bdfa4f805e52f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
52cdedefa7
commit
f258c6b0fc
@@ -4,9 +4,7 @@ package com.jetbrains.env;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.ide.util.projectWizard.EmptyModuleBuilder;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ActionsKt;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleType;
|
||||
@@ -16,7 +14,6 @@ import com.intellij.openapi.project.ex.ProjectManagerEx;
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -28,7 +25,7 @@ import com.intellij.testFramework.builders.ModuleFixtureBuilder;
|
||||
import com.intellij.testFramework.fixtures.*;
|
||||
import com.intellij.testFramework.fixtures.impl.ModuleFixtureBuilderImpl;
|
||||
import com.intellij.testFramework.fixtures.impl.ModuleFixtureImpl;
|
||||
import com.intellij.util.ExceptionUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.jetbrains.extensions.ModuleExtKt;
|
||||
import com.jetbrains.python.PyNames;
|
||||
@@ -46,6 +43,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.junit.Assert;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -299,11 +297,14 @@ public abstract class PyExecutionFixtureTestTask extends PyTestTask {
|
||||
* @return sdk
|
||||
*/
|
||||
@NotNull
|
||||
protected Sdk createTempSdk(@NotNull final String sdkHome, @NotNull final SdkCreationType sdkCreationType)
|
||||
throws InvalidSdkException {
|
||||
protected Sdk createTempSdk(@NotNull final String sdkHome, @NotNull final SdkCreationType sdkCreationType) throws InvalidSdkException {
|
||||
|
||||
final VirtualFile sdkHomeFile = LocalFileSystem.getInstance().findFileByPath(sdkHome);
|
||||
Assert.assertNotNull("Interpreter file not found: " + sdkHome, sdkHomeFile);
|
||||
|
||||
// There can't be two SDKs with same path
|
||||
removeSdkIfExists(sdkHomeFile.toNioPath());
|
||||
|
||||
CompletableFuture<Sdk> sdkRef = new CompletableFuture<>();
|
||||
ApplicationManager.getApplication().invokeAndWait(() -> {
|
||||
try {
|
||||
@@ -335,6 +336,19 @@ public abstract class PyExecutionFixtureTestTask extends PyTestTask {
|
||||
return sdk;
|
||||
}
|
||||
|
||||
private static void removeSdkIfExists(@NotNull Path sdkHomePath) {
|
||||
var sdkTable = ProjectJdkTable.getInstance();
|
||||
var existingSdk =
|
||||
ContainerUtil.find(sdkTable.getAllJdks(), sdk -> sdkHomePath.equals(Path.of(sdk.getHomePath().trim())));
|
||||
if (existingSdk != null) {
|
||||
ApplicationManager.getApplication().invokeAndWait(() -> {
|
||||
WriteAction.run(() -> {
|
||||
sdkTable.removeJdk(existingSdk);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface MyModuleFixtureBuilder extends ModuleFixtureBuilder<ModuleFixture> {
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.junit.Assert;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -47,10 +46,8 @@ public abstract class CreateConfigurationTask<T extends AbstractPythonRunConfigu
|
||||
|
||||
@Override
|
||||
public void runTestOn(@NotNull final String sdkHome, @Nullable Sdk existingSdk) throws InvalidSdkException {
|
||||
if (!Path.of(existingSdk.getHomePath()).equals(Path.of(sdkHome))) {
|
||||
// Creates SDK that doesn't exist yet
|
||||
createTempSdk(sdkHome, SdkCreationType.SDK_PACKAGES_ONLY);
|
||||
}
|
||||
|
||||
createTempSdk(sdkHome, SdkCreationType.SDK_PACKAGES_ONLY);
|
||||
ApplicationManager.getApplication().invokeAndWait(() -> ApplicationManager.getApplication().runWriteAction(() -> {
|
||||
|
||||
for (final PsiElement elementToRightClickOn : getPsiElementsToRightClickOn()) {
|
||||
|
||||
Reference in New Issue
Block a user