diff --git a/idea/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java b/idea/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java index d4f49b881be..773f72274e0 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java @@ -82,7 +82,7 @@ class JetFromJavaDescriptorHelper { Collection annotations = JavaAnnotationIndex.getInstance().get(JetClass.class.getSimpleName(), project, scope); for (PsiAnnotation annotation : annotations) { - PsiModifierList modifierList = (PsiModifierList)annotation.getParent(); + PsiModifierList modifierList = (PsiModifierList) annotation.getParent(); final PsiElement owner = modifierList.getParent(); if (owner instanceof PsiClass) { PsiClass psiClass = (PsiClass) owner; @@ -95,7 +95,7 @@ class JetFromJavaDescriptorHelper { return jetObjectClasses; } - + static Collection getTopExtensionFunctionNames(Project project, GlobalSearchScope scope) { // Extension function should have an parameter of type JetValueParameter with explicit receiver parameter. @@ -127,11 +127,12 @@ class JetFromJavaDescriptorHelper { static Collection getTopExtensionFunctionPrototypesByName(String name, Project project, GlobalSearchScope scope) { return filterJetJavaPrototypesByName( name, project, scope, - new Predicate() { + new Predicate() { @Override - public boolean apply(@Nullable JetValueParameterAnnotation jetValueParameterAnnotation) { - assert jetValueParameterAnnotation != null; - return jetValueParameterAnnotation.receiver(); + public boolean apply(@Nullable PsiMethod psiMethod) { + assert psiMethod != null; + PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); + return parameters.length > 0 && JetValueParameterAnnotation.get(parameters[0]).receiver(); } }); } @@ -139,11 +140,12 @@ class JetFromJavaDescriptorHelper { static Collection getTopLevelFunctionPrototypesByName(String name, Project project, GlobalSearchScope scope) { return filterJetJavaPrototypesByName( name, project, scope, - new Predicate() { + new Predicate() { @Override - public boolean apply(@Nullable JetValueParameterAnnotation jetValueParameterAnnotation) { - assert jetValueParameterAnnotation != null; - return !jetValueParameterAnnotation.receiver(); + public boolean apply(@Nullable PsiMethod psiMethod) { + assert psiMethod != null; + PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); + return parameters.length == 0 || !JetValueParameterAnnotation.get(parameters[0]).receiver(); } }); } @@ -169,7 +171,8 @@ class JetFromJavaDescriptorHelper { private static Collection filterJetJavaPrototypesByName( String name, Project project, GlobalSearchScope scope, - Predicate filterPredicate) { + Predicate filterPredicate + ) { Set selectedMethods = new HashSet(); Collection psiMethods = JavaMethodNameIndex.getInstance().get(name, project, scope); @@ -185,10 +188,8 @@ class JetFromJavaDescriptorHelper { } // Should be parameter with JetValueParameter.receiver == true - for (PsiParameter parameter : psiMethod.getParameterList().getParameters()) { - if (filterPredicate.apply(JetValueParameterAnnotation.get(parameter))) { - selectedMethods.add(psiMethod); - } + if (filterPredicate.apply(psiMethod)) { + selectedMethods.add(psiMethod); } } diff --git a/idea/testData/completion/basic/TopLevelFromStandardLibraryWithoutParam.kt b/idea/testData/completion/basic/TopLevelFromStandardLibraryWithoutParam.kt new file mode 100644 index 00000000000..30079d1d389 --- /dev/null +++ b/idea/testData/completion/basic/TopLevelFromStandardLibraryWithoutParam.kt @@ -0,0 +1,11 @@ +package testing + +fun someFun() { + defaultDocumentBuilderFa +} + +// Important: This test checks that completion will find top level functions from jars. +// If you going to update it make sure that methods are not auto-imported + +// RUNTIME: 1 +// EXIST: defaultDocumentBuilderFactory \ No newline at end of file diff --git a/idea/testData/completion/basic/TopLevelNonImportedExtFun.jar b/idea/testData/completion/basic/TopLevelNonImportedExtFun.jar new file mode 100644 index 00000000000..ea3886e9efb Binary files /dev/null and b/idea/testData/completion/basic/TopLevelNonImportedExtFun.jar differ diff --git a/idea/testData/completion/basic/TopLevelNonImportedExtFun.kt b/idea/testData/completion/basic/TopLevelNonImportedExtFun.kt new file mode 100644 index 00000000000..a08071615b8 --- /dev/null +++ b/idea/testData/completion/basic/TopLevelNonImportedExtFun.kt @@ -0,0 +1,8 @@ +package testing + +fun someFun() { + 1.abcd +} + +// EXIST: abcdCCC3, abcdDDD4 +// ABSENT: abcdAAA1, abcdBBB2 diff --git a/idea/testData/completion/basic/TopLevelNonImportedFun.jar b/idea/testData/completion/basic/TopLevelNonImportedFun.jar new file mode 100644 index 00000000000..ea3886e9efb Binary files /dev/null and b/idea/testData/completion/basic/TopLevelNonImportedFun.jar differ diff --git a/idea/testData/completion/basic/TopLevelNonImportedFun.kt b/idea/testData/completion/basic/TopLevelNonImportedFun.kt new file mode 100644 index 00000000000..085767bee2f --- /dev/null +++ b/idea/testData/completion/basic/TopLevelNonImportedFun.kt @@ -0,0 +1,8 @@ +package testing + +fun someFun() { + abcd +} + +// EXIST: abcdAAA1, abcdBBB2 +// ABSENT: abcdCCC3, abcdDDD4 diff --git a/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java b/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java index 6bfe73fbb4b..40d5356d94d 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java +++ b/idea/tests/org/jetbrains/jet/completion/JetBasicCompletionTest.java @@ -17,7 +17,9 @@ package org.jetbrains.jet.completion; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.plugin.JetJdkAndLibraryProjectDescriptor; import org.jetbrains.jet.plugin.PluginTestCaseBase; +import org.jetbrains.jet.testing.ConfigLibraryUtil; import java.io.File; @@ -242,6 +244,10 @@ public class JetBasicCompletionTest extends JetCompletionTestBase { doTest(); } + public void testTopLevelFromStandardLibraryWithoutParam() { + doTest(); + } + public void testVariableClassName() { doTest(); } @@ -282,6 +288,27 @@ public class JetBasicCompletionTest extends JetCompletionTestBase { doTest(); } + public void testTopLevelNonImportedFun() { + doTestWithJar(); + } + + public void testTopLevelNonImportedExtFun() { + doTestWithJar(); + } + + public void doTestWithJar() { + File libraryFile = new File(getTestDataPath() + "/" + getTestName(false) + ".jar"); + JetJdkAndLibraryProjectDescriptor projectDescriptor = new JetJdkAndLibraryProjectDescriptor(libraryFile); + + try { + ConfigLibraryUtil.configureLibrary(getModule(), getFullJavaJDK(), projectDescriptor); + doTest(); + } + finally { + ConfigLibraryUtil.unConfigureLibrary(getModule(), getFullJavaJDK(), projectDescriptor); + } + } + @NotNull @Override protected String getTestDataPath() { diff --git a/idea/tests/org/jetbrains/jet/completion/JetCompletionTestBase.java b/idea/tests/org/jetbrains/jet/completion/JetCompletionTestBase.java index b36423d4021..e33b52cb1cb 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetCompletionTestBase.java +++ b/idea/tests/org/jetbrains/jet/completion/JetCompletionTestBase.java @@ -26,7 +26,7 @@ import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.Sdk; import org.apache.commons.lang.SystemUtils; import org.jetbrains.jet.plugin.PluginTestCaseBase; -import org.jetbrains.jet.testing.ConfigRuntimeUtil; +import org.jetbrains.jet.testing.ConfigLibraryUtil; import org.jetbrains.jet.InTextDirectivesUtils; import org.jetbrains.jet.utils.ExceptionUtils; @@ -51,7 +51,7 @@ public abstract class JetCompletionTestBase extends LightCompletionTestCase { try { if (withKotlinRuntime) { - ConfigRuntimeUtil.configureKotlinRuntime(getModule(), getFullJavaJDK()); + ConfigLibraryUtil.configureKotlinRuntime(getModule(), getFullJavaJDK()); } Integer completionTime = completionUtils.getExecutionTime(fileText); @@ -82,7 +82,7 @@ public abstract class JetCompletionTestBase extends LightCompletionTestCase { } finally { if (withKotlinRuntime) { - ConfigRuntimeUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK()); + ConfigLibraryUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK()); } } } diff --git a/idea/tests/org/jetbrains/jet/plugin/JetJdkAndLibraryProjectDescriptor.java b/idea/tests/org/jetbrains/jet/plugin/JetJdkAndLibraryProjectDescriptor.java new file mode 100644 index 00000000000..e5811fe3738 --- /dev/null +++ b/idea/tests/org/jetbrains/jet/plugin/JetJdkAndLibraryProjectDescriptor.java @@ -0,0 +1,93 @@ +/* + * Copyright 2010-2013 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 org.jetbrains.jet.plugin; + +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.roots.*; +import com.intellij.openapi.roots.libraries.Library; +import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.testFramework.LightProjectDescriptor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.File; + +public class JetJdkAndLibraryProjectDescriptor implements LightProjectDescriptor { + + private final String libraryName = "myLibrary"; + private final File libraryFile; + private final OrderRootType libraryRootType; + + public JetJdkAndLibraryProjectDescriptor(File libraryFile, OrderRootType libraryRootType) { + assert libraryFile.exists() : "Library file doesn't exist: " + libraryFile.getAbsolutePath(); + this.libraryFile = libraryFile; + this.libraryRootType = libraryRootType; + } + + public JetJdkAndLibraryProjectDescriptor(File libraryFile) { + assert libraryFile.exists() : "Library file doesn't exist: " + libraryFile.getAbsolutePath(); + this.libraryFile = libraryFile; + this.libraryRootType = OrderRootType.CLASSES; + } + + @Override + public ModuleType getModuleType() { + return StdModuleTypes.JAVA; + } + + @Override + public Sdk getSdk() { + return PluginTestCaseBase.jdkFromIdeaHome(); + } + + @Override + public void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @Nullable ContentEntry contentEntry) { + Library library = model.getModuleLibraryTable().createLibrary(libraryName); + Library.ModifiableModel modifiableModel = library.getModifiableModel(); + modifiableModel.addRoot(VfsUtil.getUrlForLibraryRoot(libraryFile), libraryRootType); + modifiableModel.commit(); + } + + public void unConfigureModule(@NotNull ModifiableRootModel model) { + for (OrderEntry orderEntry : model.getOrderEntries()) { + if (orderEntry instanceof LibraryOrderEntry) { + LibraryOrderEntry libraryOrderEntry = (LibraryOrderEntry) orderEntry; + + Library library = libraryOrderEntry.getLibrary(); + if (library != null) { + String libraryName = library.getName(); + if (libraryName != null && libraryName.equals(this.libraryName)) { + + // Dispose attached roots + Library.ModifiableModel modifiableModel = library.getModifiableModel(); + for (String rootUrl : library.getRootProvider().getUrls(OrderRootType.CLASSES)) { + modifiableModel.removeRoot(rootUrl, OrderRootType.CLASSES); + } + modifiableModel.commit(); + + model.getModuleLibraryTable().removeLibrary(library); + + break; + } + } + } + } + } +} diff --git a/idea/tests/org/jetbrains/jet/plugin/JetWithJdkAndRuntimeLightProjectDescriptor.java b/idea/tests/org/jetbrains/jet/plugin/JetWithJdkAndRuntimeLightProjectDescriptor.java index 00c54103c6c..97ad16fe06f 100644 --- a/idea/tests/org/jetbrains/jet/plugin/JetWithJdkAndRuntimeLightProjectDescriptor.java +++ b/idea/tests/org/jetbrains/jet/plugin/JetWithJdkAndRuntimeLightProjectDescriptor.java @@ -16,65 +16,12 @@ package org.jetbrains.jet.plugin; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleType; -import com.intellij.openapi.module.StdModuleTypes; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.libraries.Library; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.testFramework.LightProjectDescriptor; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime; -public class JetWithJdkAndRuntimeLightProjectDescriptor implements LightProjectDescriptor { +public class JetWithJdkAndRuntimeLightProjectDescriptor extends JetJdkAndLibraryProjectDescriptor { protected JetWithJdkAndRuntimeLightProjectDescriptor() { + super(ForTestCompileRuntime.runtimeJarForTests()); } public static final JetWithJdkAndRuntimeLightProjectDescriptor INSTANCE = new JetWithJdkAndRuntimeLightProjectDescriptor(); - - @Override - public ModuleType getModuleType() { - return StdModuleTypes.JAVA; - } - - @Override - public Sdk getSdk() { - return PluginTestCaseBase.jdkFromIdeaHome(); - } - - @Override - public void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @Nullable ContentEntry contentEntry) { - Library library = model.getModuleLibraryTable().createLibrary("ktl"); - Library.ModifiableModel modifiableModel = library.getModifiableModel(); - modifiableModel.addRoot(VfsUtil.getUrlForLibraryRoot(ForTestCompileRuntime.runtimeJarForTests()), OrderRootType.CLASSES); - modifiableModel.commit(); - } - - public static void unConfigureModule(@NotNull ModifiableRootModel model) { - for (OrderEntry orderEntry : model.getOrderEntries()) { - if (orderEntry instanceof LibraryOrderEntry) { - LibraryOrderEntry libraryOrderEntry = (LibraryOrderEntry) orderEntry; - - Library library = libraryOrderEntry.getLibrary(); - if (library != null) { - String libraryName = library.getName(); - if (libraryName != null && libraryName.equals("ktl")) { - - // Dispose attached roots - Library.ModifiableModel modifiableModel = library.getModifiableModel(); - for (String rootUrl : library.getRootProvider().getUrls(OrderRootType.CLASSES)) { - modifiableModel.removeRoot(rootUrl, OrderRootType.CLASSES); - } - modifiableModel.commit(); - - model.getModuleLibraryTable().removeLibrary(library); - - break; - } - } - } - } - } } diff --git a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java index 579b2b86ece..bf7643446ee 100644 --- a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java @@ -24,7 +24,7 @@ import com.intellij.testFramework.LightCodeInsightTestCase; import org.apache.commons.lang.SystemUtils; import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.editor.importOptimizer.JetImportOptimizer; -import org.jetbrains.jet.testing.ConfigRuntimeUtil; +import org.jetbrains.jet.testing.ConfigLibraryUtil; import java.io.File; @@ -56,7 +56,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase { public void testKt1850FullQualified() throws Exception { doTest(); } - + public void testKt1850InnerClass() throws Exception { doTest(); } @@ -77,7 +77,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase { public void doTestWithKotlinRuntime() { try { - ConfigRuntimeUtil.configureKotlinRuntime(getModule(), getFullJavaJDK()); + ConfigLibraryUtil.configureKotlinRuntime(getModule(), getFullJavaJDK()); configureByFile(fileName()); invokeFormatFile(); @@ -85,7 +85,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase { checkResultByFile(null, checkFileName(), false); } finally { - ConfigRuntimeUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK()); + ConfigLibraryUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK()); } } @@ -114,7 +114,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase { private static void invokeFormatFile() { CommandProcessor.getInstance().executeCommand( - getProject(), new JetImportOptimizer().processFile(getFile()), - "Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION); + getProject(), new JetImportOptimizer().processFile(getFile()), + "Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION); } } diff --git a/idea/tests/org/jetbrains/jet/plugin/libraries/NavigateToStdlibSourceRegressionTest.java b/idea/tests/org/jetbrains/jet/plugin/libraries/NavigateToStdlibSourceRegressionTest.java index 101c5835611..30697320344 100644 --- a/idea/tests/org/jetbrains/jet/plugin/libraries/NavigateToStdlibSourceRegressionTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/libraries/NavigateToStdlibSourceRegressionTest.java @@ -68,7 +68,7 @@ public class NavigateToStdlibSourceRegressionTest extends NavigateToLibraryRegre public void configureModule(@NotNull Module module, @NotNull ModifiableRootModel model, @Nullable ContentEntry contentEntry) { super.configureModule(module, model, contentEntry); - Library library = model.getModuleLibraryTable().getLibraryByName("ktl"); + Library library = model.getModuleLibraryTable().getLibraryByName("myLibrary"); assert library != null; Library.ModifiableModel modifiableModel = library.getModifiableModel(); modifiableModel.addRoot(VfsUtil.getUrlForLibraryRoot(new File("libraries/stdlib/src")), OrderRootType.SOURCES); diff --git a/idea/tests/org/jetbrains/jet/plugin/quickfix/JetQuickFixTest.java b/idea/tests/org/jetbrains/jet/plugin/quickfix/JetQuickFixTest.java index 17c37c0b525..19647c95ba6 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/JetQuickFixTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/JetQuickFixTest.java @@ -29,7 +29,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.JetTestCaseBuilder; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.plugin.PluginTestCaseBase; -import org.jetbrains.jet.testing.ConfigRuntimeUtil; +import org.jetbrains.jet.testing.ConfigLibraryUtil; import java.io.File; import java.io.FilenameFilter; @@ -85,7 +85,8 @@ public class JetQuickFixTest extends LightQuickFixTestCase { List subDirs = Arrays.asList(quickFixTestsFilter != null ? dir.list(quickFixTestsFilter) : dir.list()); Collections.sort(subDirs); for (String subDirName : subDirs) { - final TestSuite singleFileTestSuite = JetTestCaseBuilder.suiteForDirectory(getTestDataPathBase(), subDirName, true, singleFileNameFilter, singleFileNamedTestFactory); + final TestSuite singleFileTestSuite = JetTestCaseBuilder + .suiteForDirectory(getTestDataPathBase(), subDirName, true, singleFileNameFilter, singleFileNamedTestFactory); if (singleFileTestSuite.countTestCases() != 0) { suite.addTest(singleFileTestSuite); } @@ -107,7 +108,7 @@ public class JetQuickFixTest extends LightQuickFixTestCase { boolean isWithRuntime = name.endsWith("Runtime"); if (isWithRuntime) { - ConfigRuntimeUtil.configureKotlinRuntime(getModule(), getFullJavaJDK()); + ConfigLibraryUtil.configureKotlinRuntime(getModule(), getFullJavaJDK()); } try { @@ -117,7 +118,7 @@ public class JetQuickFixTest extends LightQuickFixTestCase { } finally { if (isWithRuntime) { - ConfigRuntimeUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK()); + ConfigLibraryUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK()); } } } diff --git a/idea/tests/org/jetbrains/jet/search/JUnitMembersSearcherTest.java b/idea/tests/org/jetbrains/jet/search/JUnitMembersSearcherTest.java index 4e8a30d8eae..8a750ba0ea7 100644 --- a/idea/tests/org/jetbrains/jet/search/JUnitMembersSearcherTest.java +++ b/idea/tests/org/jetbrains/jet/search/JUnitMembersSearcherTest.java @@ -17,21 +17,13 @@ package org.jetbrains.jet.search; import com.intellij.openapi.application.PathManager; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleType; -import com.intellij.openapi.module.StdModuleTypes; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.roots.ContentEntry; -import com.intellij.openapi.roots.ModifiableRootModel; -import com.intellij.openapi.roots.OrderRootType; -import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.VfsUtil; import com.intellij.psi.PsiClass; import com.intellij.psi.search.searches.AnnotatedMembersSearch; import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.testFramework.LightProjectDescriptor; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.plugin.JetJdkAndLibraryProjectDescriptor; import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.InTextDirectivesUtils; @@ -40,27 +32,8 @@ import java.io.IOException; import java.util.List; public class JUnitMembersSearcherTest extends AbstractSearcherTest { - private static final LightProjectDescriptor junitProjectDescriptor = new LightProjectDescriptor() { - @Override - public ModuleType getModuleType() { - return StdModuleTypes.JAVA; - } - - @Override - public Sdk getSdk() { - return PluginTestCaseBase.jdkFromIdeaHome(); - } - - @Override - public void configureModule(Module module, ModifiableRootModel model, ContentEntry contentEntry) { - Library library = model.getModuleLibraryTable().createLibrary("junit"); - Library.ModifiableModel modifiableModel = library.getModifiableModel(); - modifiableModel.addRoot(VfsUtil.getUrlForLibraryRoot( - new File(PathManager.getHomePath().replace(File.separatorChar, '/') + "/lib/junit-4.10.jar")), - OrderRootType.CLASSES); - modifiableModel.commit(); - } - }; + private static final LightProjectDescriptor junitProjectDescriptor = + new JetJdkAndLibraryProjectDescriptor(new File(PathManager.getHomePath().replace(File.separatorChar, '/') + "/lib/junit-4.10.jar")); public void testJunit3() throws IOException { doJUnit3test(); @@ -100,7 +73,6 @@ public class JUnitMembersSearcherTest extends AbstractSearcherTest { @NotNull @Override protected LightProjectDescriptor getProjectDescriptor() { - return junitProjectDescriptor; } } diff --git a/idea/tests/org/jetbrains/jet/testing/ConfigRuntimeUtil.java b/idea/tests/org/jetbrains/jet/testing/ConfigLibraryUtil.java similarity index 63% rename from idea/tests/org/jetbrains/jet/testing/ConfigRuntimeUtil.java rename to idea/tests/org/jetbrains/jet/testing/ConfigLibraryUtil.java index 3a5415b90b8..5ff81699609 100644 --- a/idea/tests/org/jetbrains/jet/testing/ConfigRuntimeUtil.java +++ b/idea/tests/org/jetbrains/jet/testing/ConfigLibraryUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2012 JetBrains s.r.o. + * Copyright 2010-2013 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. @@ -21,16 +21,31 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.testFramework.LightProjectDescriptor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.plugin.JetJdkAndLibraryProjectDescriptor; import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor; /** * Helper for configuring kotlin runtime in tested project. */ -public class ConfigRuntimeUtil { - private ConfigRuntimeUtil() { +public class ConfigLibraryUtil { + private ConfigLibraryUtil() { } public static void configureKotlinRuntime(final Module module, final Sdk sdk) { + configureLibrary(module, sdk, JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE); + } + + public static void unConfigureKotlinRuntime(final Module module, final Sdk sdk) { + unConfigureLibrary(module, sdk, JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE); + } + + public static void configureLibrary( + @NotNull final Module module, + @NotNull final Sdk sdk, + @NotNull final LightProjectDescriptor projectDescriptor + ) { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { @@ -39,24 +54,27 @@ public class ConfigRuntimeUtil { final ModifiableRootModel rootModel = rootManager.getModifiableModel(); rootModel.setSdk(sdk); - JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE.configureModule(module, rootModel, null); - + projectDescriptor.configureModule(module, rootModel, null); rootModel.commit(); } }); } - public static void unConfigureKotlinRuntime(final Module module, final Sdk sdk) { + public static void unConfigureLibrary( + @NotNull final Module module, + @NotNull final Sdk sdk, + @NotNull final LightProjectDescriptor projectDescriptor + ) { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - final ModuleRootManager rootManager = ModuleRootManager.getInstance(module); final ModifiableRootModel rootModel = rootManager.getModifiableModel(); rootModel.setSdk(sdk); - JetWithJdkAndRuntimeLightProjectDescriptor.unConfigureModule(rootModel); - + if (projectDescriptor instanceof JetJdkAndLibraryProjectDescriptor) { + ((JetJdkAndLibraryProjectDescriptor) projectDescriptor).unConfigureModule(rootModel); + } rootModel.commit(); } });