From 7f1460ecb45563d2b611b3db82fa612852284e69 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 16 Aug 2017 15:08:14 +0200 Subject: [PATCH] Add bundled skeletons builder Pre-built skeletons are bundled with PyCharm and save a lot of time on the first indexing. Though they were built manually and currently not up-to date. Now we build them automatically. --- .../sdk/skeletons/PySkeletonRefresher.java | 67 +++++---- .../env/PyCaseSensitiveResolveTest.java | 2 +- .../com/jetbrains/env/PyEnvTaskRunner.java | 6 +- .../env/PyExecutionFixtureTestTask.java | 8 +- .../env/PyProcessWithConsoleTestTask.java | 2 +- .../testSrc/com/jetbrains/env/PyTestTask.java | 2 +- .../testSrc/com/jetbrains/env/PyToxTest.java | 2 +- .../jetbrains/env/python/PyPackagingTest.java | 2 +- .../env/python/PythonDebuggerTest.java | 2 +- .../env/python/PythonGeneratorTest.java | 2 +- .../env/python/PythonSkeletonsTest.java | 4 +- .../env/python/console/PyConsoleTask.java | 2 +- .../env/python/dotNet/SkeletonTestTask.java | 2 +- .../testing/CreateConfigurationTestTask.java | 2 +- .../testing/PyTestsFunctionBasedRunner.java | 2 +- ...yUnitTestLikeProcessWithConsoleTestTask.kt | 2 +- .../python/testing/PythonDocTestingTest.java | 2 +- .../python/testing/PythonNoseTestingTest.java | 2 +- .../python/testing/PythonPyTestingTest.java | 2 +- .../python/testing/RerunSubfolderTask.java | 2 +- .../python/testing/RunModuleAsFileTask.java | 4 +- .../python/testing/SetupTearDownTestTask.java | 2 +- .../env/python/typeshed/PyTypeShedTestCase.kt | 4 +- .../python/sdkTools/PyTestSdkTools.java | 138 ------------------ .../python/sdkTools/SdkCreationType.java | 20 --- .../python/sdkTools/package-info.java | 6 - python/testSrc/python-community-tests.iml | 2 + 27 files changed, 71 insertions(+), 222 deletions(-) delete mode 100644 python/testSrc/com/jetbrains/python/sdkTools/SdkCreationType.java delete mode 100644 python/testSrc/com/jetbrains/python/sdkTools/package-info.java diff --git a/python/src/com/jetbrains/python/sdk/skeletons/PySkeletonRefresher.java b/python/src/com/jetbrains/python/sdk/skeletons/PySkeletonRefresher.java index f60250c911b6..7a48e484ede0 100644 --- a/python/src/com/jetbrains/python/sdk/skeletons/PySkeletonRefresher.java +++ b/python/src/com/jetbrains/python/sdk/skeletons/PySkeletonRefresher.java @@ -108,8 +108,8 @@ public class PySkeletonRefresher { } public static void refreshSkeletonsOfSdk(@Nullable Project project, - Component ownerComponent, - String skeletonsPath, + @Nullable Component ownerComponent, + @Nullable String skeletonsPath, @NotNull Sdk sdk) throws InvalidSdkException { final Map> errors = new TreeMap<>(); @@ -815,32 +815,12 @@ public class PySkeletonRefresher { return null; } LOG.info("Pregenerated skeletons root is " + root); - @NonNls final String versionString = mySdk.getVersionString(); - if (versionString == null) { - return null; - } - if (PySdkUtil.isRemote(mySdk)) { - return null; - } + String prebuiltSkeletonsName = getPregeneratedSkeletonsName(); + if (prebuiltSkeletonsName == null) return null; + + File f = new File(root, prebuiltSkeletonsName); - String version = versionString.toLowerCase().replace(" ", "-"); - File f; - if (SystemInfo.isMac) { - String osVersion = SystemInfo.OS_VERSION; - int dot = osVersion.indexOf('.'); - if (dot >= 0) { - int secondDot = osVersion.indexOf('.', dot + 1); - if (secondDot >= 0) { - osVersion = osVersion.substring(0, secondDot); - } - } - f = new File(root, "skeletons-mac-" + myGeneratorVersion + "-" + osVersion + "-" + version + ".zip"); - } - else { - String os = SystemInfo.isWindows ? "win" : "nix"; - f = new File(root, "skeletons-" + os + "-" + myGeneratorVersion + "-" + version + ".zip"); - } if (f.exists()) { LOG.info("Found pregenerated skeletons at " + f.getPath()); final VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(f); @@ -856,6 +836,41 @@ public class PySkeletonRefresher { } } + public String getPregeneratedSkeletonsName() { + return getPregeneratedSkeletonsName(mySdk, myGeneratorVersion); + } + + @Nullable + public static String getPregeneratedSkeletonsName(@NotNull Sdk sdk, int generatorVersion) { + String prebuiltSkeletonsName; + @NonNls final String versionString = sdk.getVersionString(); + if (versionString == null) { + return null; + } + + if (PySdkUtil.isRemote(sdk)) { + return null; + } + + String version = versionString.toLowerCase().replace(" ", "-"); + + if (SystemInfo.isMac) { + String osVersion = SystemInfo.OS_VERSION; + int dot = osVersion.indexOf('.'); + if (dot >= 0) { + int secondDot = osVersion.indexOf('.', dot + 1); + if (secondDot >= 0) { + osVersion = osVersion.substring(0, secondDot); + } + } + prebuiltSkeletonsName = "skeletons-mac-" + generatorVersion + "-" + osVersion + "-" + version + ".zip"; + } + else { + String os = SystemInfo.isWindows ? "win" : "nix"; + prebuiltSkeletonsName = "skeletons-" + os + "-" + generatorVersion + "-" + version + ".zip"; + } return prebuiltSkeletonsName; + } + @Nullable private static File findPregeneratedSkeletonsRoot() { final String path = PathManager.getHomePath(); diff --git a/python/testSrc/com/jetbrains/env/PyCaseSensitiveResolveTest.java b/python/testSrc/com/jetbrains/env/PyCaseSensitiveResolveTest.java index 31ff1e77fa50..4259acf00252 100644 --- a/python/testSrc/com/jetbrains/env/PyCaseSensitiveResolveTest.java +++ b/python/testSrc/com/jetbrains/env/PyCaseSensitiveResolveTest.java @@ -16,7 +16,7 @@ package com.jetbrains.env; import com.intellij.openapi.application.ApplicationManager; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.junit.Assert; import org.junit.Test; diff --git a/python/testSrc/com/jetbrains/env/PyEnvTaskRunner.java b/python/testSrc/com/jetbrains/env/PyEnvTaskRunner.java index 7334034260c2..7069897dd739 100644 --- a/python/testSrc/com/jetbrains/env/PyEnvTaskRunner.java +++ b/python/testSrc/com/jetbrains/env/PyEnvTaskRunner.java @@ -9,8 +9,8 @@ import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.sdk.InvalidSdkException; import com.jetbrains.python.sdk.PythonSdkType; -import com.jetbrains.python.sdkTools.PyTestSdkTools; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.PySdkTools; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -146,7 +146,7 @@ public class PyEnvTaskRunner { if (url == null) { return null; } - return PyTestSdkTools.createTempSdk(url, SdkCreationType.EMPTY_SDK, null); + return PySdkTools.createTempSdk(url, SdkCreationType.EMPTY_SDK, null); } protected boolean shouldRun(String root, PyTestTask task) { diff --git a/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java b/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java index a45691f061bc..923a1e0b085e 100644 --- a/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java +++ b/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java @@ -25,8 +25,8 @@ import com.jetbrains.python.packaging.PyPackageManager; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.sdk.InvalidSdkException; import com.jetbrains.python.sdk.PythonSdkType; -import com.jetbrains.python.sdkTools.PyTestSdkTools; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.PySdkTools; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Assert; @@ -234,7 +234,7 @@ public abstract class PyExecutionFixtureTestTask extends PyTestTask { * Creates SDK by its path * * @param sdkHome path to sdk (probably obtained by {@link #runTestOn(String)}) - * @param sdkCreationType SDK creation strategy (see {@link com.jetbrains.python.sdkTools.SdkCreationType} doc) + * @param sdkCreationType SDK creation strategy (see {@link sdkTools.SdkCreationType} doc) * @return sdk */ @NotNull @@ -242,7 +242,7 @@ public abstract class PyExecutionFixtureTestTask extends PyTestTask { throws InvalidSdkException { final VirtualFile sdkHomeFile = LocalFileSystem.getInstance().findFileByPath(sdkHome); Assert.assertNotNull("Interpreter file not found: " + sdkHome, sdkHomeFile); - final Sdk sdk = PyTestSdkTools.createTempSdk(sdkHomeFile, sdkCreationType, myFixture.getModule()); + final Sdk sdk = PySdkTools.createTempSdk(sdkHomeFile, sdkCreationType, myFixture.getModule()); // We use gradle script to create environment. This script utilizes Conda. // Conda supports 2 types of package installation: conda native and pip. We use pip. // PyCharm Conda support ignores packages installed via pip ("conda list -e" does it, see PyCondaPackageManagerImpl) diff --git a/python/testSrc/com/jetbrains/env/PyProcessWithConsoleTestTask.java b/python/testSrc/com/jetbrains/env/PyProcessWithConsoleTestTask.java index f2669f4aa5fa..fff1c810f9a5 100644 --- a/python/testSrc/com/jetbrains/env/PyProcessWithConsoleTestTask.java +++ b/python/testSrc/com/jetbrains/env/PyProcessWithConsoleTestTask.java @@ -24,7 +24,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Ref; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.xdebugger.XDebuggerTestUtil; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Assert; diff --git a/python/testSrc/com/jetbrains/env/PyTestTask.java b/python/testSrc/com/jetbrains/env/PyTestTask.java index 257604c3acca..562e327b5ba0 100644 --- a/python/testSrc/com/jetbrains/env/PyTestTask.java +++ b/python/testSrc/com/jetbrains/env/PyTestTask.java @@ -32,7 +32,7 @@ public abstract class PyTestTask { /** * Run test on certain SDK path. - * To create SDK from path, use {@link PyExecutionFixtureTestTask#createTempSdk(String, com.jetbrains.python.sdkTools.SdkCreationType)} + * To create SDK from path, use {@link PyExecutionFixtureTestTask#createTempSdk(String, sdkTools.SdkCreationType)} * * @param sdkHome sdk path */ diff --git a/python/testSrc/com/jetbrains/env/PyToxTest.java b/python/testSrc/com/jetbrains/env/PyToxTest.java index 3f805361d8e3..7b34916b9bc4 100644 --- a/python/testSrc/com/jetbrains/env/PyToxTest.java +++ b/python/testSrc/com/jetbrains/env/PyToxTest.java @@ -21,10 +21,10 @@ import com.intellij.execution.testframework.sm.runner.ui.MockPrinter; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; -import com.jetbrains.python.sdkTools.SdkCreationType; import com.jetbrains.python.testing.tox.PyToxConfiguration; import com.jetbrains.python.testing.tox.PyToxConfigurationFactory; import com.jetbrains.python.testing.tox.PyToxTestTools; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.hamcrest.Matchers; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/python/testSrc/com/jetbrains/env/python/PyPackagingTest.java b/python/testSrc/com/jetbrains/env/python/PyPackagingTest.java index 94b6c86f244d..9a89f59622fe 100644 --- a/python/testSrc/com/jetbrains/env/python/PyPackagingTest.java +++ b/python/testSrc/com/jetbrains/env/python/PyPackagingTest.java @@ -16,7 +16,7 @@ import com.jetbrains.python.packaging.PyRequirement; import com.jetbrains.python.sdk.PythonSdkType; import com.jetbrains.python.sdk.flavors.PythonSdkFlavor; import com.jetbrains.python.sdk.flavors.VirtualEnvSdkFlavor; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Test; diff --git a/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java b/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java index b773c2e9ba7b..9136da9c18be 100644 --- a/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java +++ b/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java @@ -26,7 +26,7 @@ import com.jetbrains.python.debugger.pydev.PyDebugCallback; import com.jetbrains.python.debugger.settings.PyDebuggerSettings; import com.jetbrains.python.debugger.settings.PySteppingFilter; import com.jetbrains.python.sdk.flavors.PythonSdkFlavor; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Test; diff --git a/python/testSrc/com/jetbrains/env/python/PythonGeneratorTest.java b/python/testSrc/com/jetbrains/env/python/PythonGeneratorTest.java index 3462c6c46ecd..ac5a06df26db 100644 --- a/python/testSrc/com/jetbrains/env/python/PythonGeneratorTest.java +++ b/python/testSrc/com/jetbrains/env/python/PythonGeneratorTest.java @@ -4,7 +4,7 @@ import com.jetbrains.env.PyEnvTestCase; import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyUnitTestProcessRunner; import com.jetbrains.python.PythonHelpersLocator; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.junit.Test; diff --git a/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java b/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java index 202cc5cbbd95..0dd89a0d30c7 100644 --- a/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java +++ b/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java @@ -29,18 +29,16 @@ import com.jetbrains.env.PyEnvTestCase; import com.jetbrains.env.PyExecutionFixtureTestTask; import com.jetbrains.env.PyTestTask; import com.jetbrains.python.PythonFileType; -import com.jetbrains.python.documentation.PythonDocumentationProvider; import com.jetbrains.python.inspections.unresolvedReference.PyUnresolvedReferencesInspection; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.resolve.PythonSdkPathCache; -import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; import com.jetbrains.python.sdk.PythonSdkType; import com.jetbrains.python.sdk.skeletons.PySkeletonRefresher; import com.jetbrains.python.sdk.skeletons.SkeletonVersionChecker; -import com.jetbrains.python.sdkTools.SdkCreationType; import com.jetbrains.python.toolbox.Maybe; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.junit.Test; diff --git a/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java b/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java index 72d4f07e5e83..a0f32dc82be3 100644 --- a/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java +++ b/python/testSrc/com/jetbrains/env/python/console/PyConsoleTask.java @@ -37,7 +37,7 @@ import com.jetbrains.python.console.*; import com.jetbrains.python.console.pydev.ConsoleCommunicationListener; import com.jetbrains.python.debugger.PyDebugValue; import com.jetbrains.python.debugger.PyDebuggerException; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Assert; diff --git a/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java b/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java index 0a3cde4aec99..9f7b592eb113 100644 --- a/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java +++ b/python/testSrc/com/jetbrains/env/python/dotNet/SkeletonTestTask.java @@ -24,7 +24,7 @@ import com.jetbrains.python.inspections.quickfix.GenerateBinaryStubsFix; import com.jetbrains.python.inspections.unresolvedReference.PyUnresolvedReferencesInspection; import com.jetbrains.python.sdk.InvalidSdkException; import com.jetbrains.python.sdk.PythonSdkType; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.hamcrest.Matchers; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java b/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java index 34b882b4f0cd..8a169c7d901a 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java +++ b/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java @@ -29,8 +29,8 @@ import com.jetbrains.env.PyExecutionFixtureTestTask; import com.jetbrains.python.run.PythonConfigurationFactoryBase; import com.jetbrains.python.run.PythonRunConfiguration; import com.jetbrains.python.sdk.InvalidSdkException; -import com.jetbrains.python.sdkTools.SdkCreationType; import com.jetbrains.python.testing.*; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.hamcrest.Matchers; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/python/testSrc/com/jetbrains/env/python/testing/PyTestsFunctionBasedRunner.java b/python/testSrc/com/jetbrains/env/python/testing/PyTestsFunctionBasedRunner.java index a0f8d02c3b6d..6bf21cc9ae1a 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PyTestsFunctionBasedRunner.java +++ b/python/testSrc/com/jetbrains/env/python/testing/PyTestsFunctionBasedRunner.java @@ -20,7 +20,7 @@ import com.intellij.openapi.application.ReadAction; import com.intellij.util.ThrowableRunnable; import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyScriptTestProcessRunner; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; /** diff --git a/python/testSrc/com/jetbrains/env/python/testing/PyUnitTestLikeProcessWithConsoleTestTask.kt b/python/testSrc/com/jetbrains/env/python/testing/PyUnitTestLikeProcessWithConsoleTestTask.kt index 2ec7e246239c..693809d70524 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PyUnitTestLikeProcessWithConsoleTestTask.kt +++ b/python/testSrc/com/jetbrains/env/python/testing/PyUnitTestLikeProcessWithConsoleTestTask.kt @@ -19,7 +19,7 @@ import com.google.common.collect.Sets import com.jetbrains.env.PyProcessWithConsoleTestTask import com.jetbrains.env.ut.PyScriptTestProcessRunner import com.jetbrains.env.ut.PyUnitTestProcessRunner -import com.jetbrains.python.sdkTools.SdkCreationType +import com.jetbrains.python.tools.sdkTools.SdkCreationType import java.util.function.Function /** diff --git a/python/testSrc/com/jetbrains/env/python/testing/PythonDocTestingTest.java b/python/testSrc/com/jetbrains/env/python/testing/PythonDocTestingTest.java index 0ff010f5a519..88470da16811 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PythonDocTestingTest.java +++ b/python/testSrc/com/jetbrains/env/python/testing/PythonDocTestingTest.java @@ -3,9 +3,9 @@ package com.jetbrains.env.python.testing; import com.jetbrains.env.PyEnvTestCase; import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyDocTestProcessRunner; -import com.jetbrains.python.sdkTools.SdkCreationType; import com.jetbrains.python.testing.AbstractPythonLegacyTestRunConfiguration; import com.jetbrains.python.testing.doctest.PythonDocTestRunConfiguration; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.hamcrest.Matchers; import org.jetbrains.annotations.NotNull; import org.junit.Assert; diff --git a/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java b/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java index 78508af32d20..5eec283b01b4 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java +++ b/python/testSrc/com/jetbrains/env/python/testing/PythonNoseTestingTest.java @@ -7,10 +7,10 @@ import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.python.testing.CreateConfigurationTestTask.PyConfigurationCreationTask; import com.jetbrains.env.ut.PyNoseTestProcessRunner; import com.jetbrains.python.PyNames; -import com.jetbrains.python.sdkTools.SdkCreationType; import com.jetbrains.python.testing.PyNoseTestConfiguration; import com.jetbrains.python.testing.PyNoseTestFactory; import com.jetbrains.python.testing.PyTestFrameworkService; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.junit.Assert; import org.junit.Test; diff --git a/python/testSrc/com/jetbrains/env/python/testing/PythonPyTestingTest.java b/python/testSrc/com/jetbrains/env/python/testing/PythonPyTestingTest.java index ddee76585a2f..a27f000ef455 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/PythonPyTestingTest.java +++ b/python/testSrc/com/jetbrains/env/python/testing/PythonPyTestingTest.java @@ -15,11 +15,11 @@ import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyTestTestProcessRunner; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.PyFunction; -import com.jetbrains.python.sdkTools.SdkCreationType; import com.jetbrains.python.testing.PyTestConfiguration; import com.jetbrains.python.testing.PyTestFactory; import com.jetbrains.python.testing.PyTestFrameworkService; import com.jetbrains.python.testing.TestTargetType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.hamcrest.Matchers; import org.jetbrains.annotations.NotNull; import org.junit.Assert; diff --git a/python/testSrc/com/jetbrains/env/python/testing/RerunSubfolderTask.java b/python/testSrc/com/jetbrains/env/python/testing/RerunSubfolderTask.java index 1f05949af5a3..bf48e34d8b78 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/RerunSubfolderTask.java +++ b/python/testSrc/com/jetbrains/env/python/testing/RerunSubfolderTask.java @@ -17,7 +17,7 @@ package com.jetbrains.env.python.testing; import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyScriptTestProcessRunner; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import static org.junit.Assert.assertEquals; diff --git a/python/testSrc/com/jetbrains/env/python/testing/RunModuleAsFileTask.java b/python/testSrc/com/jetbrains/env/python/testing/RunModuleAsFileTask.java index 57c409e49bf8..5fbd1c6e18c6 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/RunModuleAsFileTask.java +++ b/python/testSrc/com/jetbrains/env/python/testing/RunModuleAsFileTask.java @@ -18,9 +18,7 @@ package com.jetbrains.env.python.testing; import com.jetbrains.env.PyAbstractTestProcessRunner; import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyScriptTestProcessRunner; -import com.jetbrains.env.ut.PyUnitTestProcessRunner; -import com.jetbrains.python.run.PythonProcessRunner; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.junit.Assert; diff --git a/python/testSrc/com/jetbrains/env/python/testing/SetupTearDownTestTask.java b/python/testSrc/com/jetbrains/env/python/testing/SetupTearDownTestTask.java index 1d6cdde79222..792f0566820d 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/SetupTearDownTestTask.java +++ b/python/testSrc/com/jetbrains/env/python/testing/SetupTearDownTestTask.java @@ -17,7 +17,7 @@ package com.jetbrains.env.python.testing; import com.jetbrains.env.PyProcessWithConsoleTestTask; import com.jetbrains.env.ut.PyScriptTestProcessRunner; -import com.jetbrains.python.sdkTools.SdkCreationType; +import com.jetbrains.python.tools.sdkTools.SdkCreationType; import org.jetbrains.annotations.NotNull; import org.junit.Assert; diff --git a/python/testSrc/com/jetbrains/env/python/typeshed/PyTypeShedTestCase.kt b/python/testSrc/com/jetbrains/env/python/typeshed/PyTypeShedTestCase.kt index f603702b7cdb..6a0fe5cbbc93 100644 --- a/python/testSrc/com/jetbrains/env/python/typeshed/PyTypeShedTestCase.kt +++ b/python/testSrc/com/jetbrains/env/python/typeshed/PyTypeShedTestCase.kt @@ -37,7 +37,7 @@ import com.jetbrains.python.sdk.PySdkUtil import com.jetbrains.python.sdk.PythonSdkType import com.jetbrains.python.sdk.PythonSdkUpdater import com.jetbrains.python.sdk.flavors.PythonSdkFlavor -import com.jetbrains.python.sdkTools.PyTestSdkTools +import com.jetbrains.python.tools.sdkTools.PySdkTools import org.junit.After import org.junit.Before @@ -66,7 +66,7 @@ abstract class PyTypeShedTestCase(protected val path: String, protected val sdkP sdkCache[sdkPath] = sdk val skeletonsDir = PySdkUtil.findSkeletonsDir(sdk) if (skeletonsDir == null || skeletonsDir.children?.isEmpty() ?: true) { - PyTestSdkTools.generateTempSkeletonsOrPackages(sdk, true, module) + PySdkTools.generateTempSkeletonsOrPackages(sdk, true, module) } EdtTestUtil.runInEdtAndWait(ThrowableRunnable { SdkConfigurationUtil.addSdk(sdk) diff --git a/python/testSrc/com/jetbrains/python/sdkTools/PyTestSdkTools.java b/python/testSrc/com/jetbrains/python/sdkTools/PyTestSdkTools.java index 302ea372bbcc..e69de29bb2d1 100644 --- a/python/testSrc/com/jetbrains/python/sdkTools/PyTestSdkTools.java +++ b/python/testSrc/com/jetbrains/python/sdkTools/PyTestSdkTools.java @@ -1,138 +0,0 @@ -/* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.jetbrains.python.sdkTools; - -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.PathManager; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.SdkModificator; -import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil; -import com.intellij.openapi.roots.ModuleRootModificationUtil; -import com.intellij.openapi.roots.OrderRootType; -import com.intellij.openapi.roots.ProjectRootManager; -import com.intellij.openapi.util.Ref; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.testFramework.EdtTestUtil; -import com.jetbrains.python.sdk.InvalidSdkException; -import com.jetbrains.python.sdk.PythonSdkAdditionalData; -import com.jetbrains.python.sdk.PythonSdkType; -import com.jetbrains.python.sdk.flavors.PythonSdkFlavor; -import com.jetbrains.python.sdk.skeletons.PySkeletonRefresher; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.junit.Assert; - -import java.io.IOException; - -/** - * Engine to create SDK for tests. - * See {@link #createTempSdk(com.intellij.openapi.vfs.VirtualFile, SdkCreationType, com.intellij.openapi.module.Module)} - * - * @author Ilya.Kazakevich - */ -public final class PyTestSdkTools { - - private static final Sdk[] NO_SDK = new Sdk[0]; - - private PyTestSdkTools() { - - } - - /** - * Creates SDK by its path and associates it with module (if module provided) - * - * @param sdkHome path to sdk - * @param sdkCreationType SDK creation strategy (see {@link SdkCreationType} doc) - * @return sdk - */ - @NotNull - public static Sdk createTempSdk(@NotNull final VirtualFile sdkHome, - @NotNull final SdkCreationType sdkCreationType, - @Nullable final Module module - ) - throws InvalidSdkException { - final Ref ref = Ref.create(); - EdtTestUtil.runInEdtAndWait(() -> { - final Sdk sdk = SdkConfigurationUtil.setupSdk(NO_SDK, sdkHome, PythonSdkType.getInstance(), true, null, null); - Assert.assertNotNull("Failed to create SDK on " + sdkHome, sdk); - ref.set(sdk); - }); - final Sdk sdk = ref.get(); - if (sdkCreationType != SdkCreationType.EMPTY_SDK) { - generateTempSkeletonsOrPackages(sdk, sdkCreationType == SdkCreationType.SDK_PACKAGES_AND_SKELETONS, module); - } - EdtTestUtil.runInEdtAndWait(() -> SdkConfigurationUtil.addSdk(sdk)); - return sdk; - } - - - /** - * Adds installed eggs to SDK, generates skeletons (optionally) and associates it with module. - * - * @param sdk sdk to process - * @param addSkeletons add skeletons or only packages - * @param module module to associate with (if provided) - * @throws InvalidSdkException bas sdk - * @throws IOException failed to read eggs - */ - public static void generateTempSkeletonsOrPackages(@NotNull final Sdk sdk, - final boolean addSkeletons, - @Nullable final Module module) - throws InvalidSdkException { - Project project = null; - - if (module != null) { - project = module.getProject(); - final Project finalProject = project; - // Associate with module - ModuleRootModificationUtil.setModuleSdk(module, sdk); - - EdtTestUtil.runInEdtAndWait(() -> ApplicationManager.getApplication() - .runWriteAction(() -> ProjectRootManager.getInstance(finalProject).setProjectSdk(sdk))); - } - - - final SdkModificator modificator = sdk.getSdkModificator(); - - modificator.setSdkAdditionalData(new PythonSdkAdditionalData(PythonSdkFlavor.getFlavor(sdk))); - - for (final String path : PythonSdkType.getSysPathsFromScript(sdk.getHomePath())) { - addTestSdkRoot(modificator, path); - } - if (!addSkeletons) { - EdtTestUtil.runInEdtAndWait(modificator::commitChanges); - return; - } - - final String skeletonsPath = PythonSdkType.getSkeletonsPath(PathManager.getSystemPath(), sdk.getHomePath()); - addTestSdkRoot(modificator, skeletonsPath); - - EdtTestUtil.runInEdtAndWait(modificator::commitChanges); - - PySkeletonRefresher - .refreshSkeletonsOfSdk(project, null, skeletonsPath, sdk); - } - - public static void addTestSdkRoot(@NotNull SdkModificator sdkModificator, @NotNull String path) { - final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByPath(path); - if (file != null) { - sdkModificator.addRoot(PythonSdkType.getSdkRootVirtualFile(file), OrderRootType.CLASSES); - } - } -} diff --git a/python/testSrc/com/jetbrains/python/sdkTools/SdkCreationType.java b/python/testSrc/com/jetbrains/python/sdkTools/SdkCreationType.java deleted file mode 100644 index 231f243f564e..000000000000 --- a/python/testSrc/com/jetbrains/python/sdkTools/SdkCreationType.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jetbrains.python.sdkTools; - -/** - * SDK creation type - * @author Ilya.Kazakevich - */ -public enum SdkCreationType { - /** - * SDK only (no packages nor skeletons) - */ - EMPTY_SDK, - /** - * SDK + installed packages from syspath - */ - SDK_PACKAGES_ONLY, - /** - * SDK + installed packages from syspath + skeletons - */ - SDK_PACKAGES_AND_SKELETONS -} diff --git a/python/testSrc/com/jetbrains/python/sdkTools/package-info.java b/python/testSrc/com/jetbrains/python/sdkTools/package-info.java deleted file mode 100644 index 8b8fb74b9167..000000000000 --- a/python/testSrc/com/jetbrains/python/sdkTools/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Engine to create SDK in tests. - * See {@link com.jetbrains.python.sdkTools.PyTestSdkTools} - * @author Ilya.Kazakevich - */ -package com.jetbrains.python.sdkTools; \ No newline at end of file diff --git a/python/testSrc/python-community-tests.iml b/python/testSrc/python-community-tests.iml index 5c2926d32146..e842dc9895da 100644 --- a/python/testSrc/python-community-tests.iml +++ b/python/testSrc/python-community-tests.iml @@ -23,5 +23,7 @@ + + \ No newline at end of file