From 7b17ae3b8b4312d6a0c4d5976866a4813f4ff317 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Thu, 2 Apr 2015 22:38:20 +0300 Subject: [PATCH] add testUtils --- .../idea/stubs/AbstractResolveByStubTest.java | 22 +------- .../org/jetbrains/kotlin/idea/testUtils.kt | 55 +++++++++++++++++++ 2 files changed, 57 insertions(+), 20 deletions(-) create mode 100644 idea/tests/org/jetbrains/kotlin/idea/testUtils.kt diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java index b28dd4b922f..ddbec1f162b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractResolveByStubTest.java @@ -16,12 +16,7 @@ package org.jetbrains.kotlin.idea.stubs; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.roots.ContentEntry; -import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.testFramework.LightProjectDescriptor; -import com.intellij.util.Consumer; import kotlin.Function0; import kotlin.Unit; import org.jetbrains.annotations.NotNull; @@ -30,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; import org.jetbrains.kotlin.idea.JetWithJdkAndRuntimeLightProjectDescriptor; import org.jetbrains.kotlin.idea.KotlinCodeInsightTestCase; import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; +import org.jetbrains.kotlin.idea.testUtils.TestUtilsPackage; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator; @@ -37,7 +33,6 @@ import org.junit.Assert; import java.io.File; -import static com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel; import static org.jetbrains.kotlin.test.util.DescriptorValidator.ValidationVisitor.errorTypesForbidden; public abstract class AbstractResolveByStubTest extends KotlinCodeInsightTestCase { @@ -48,7 +43,7 @@ public abstract class AbstractResolveByStubTest extends KotlinCodeInsightTestCas private void doTest(@NotNull final String path, final boolean checkPrimaryConstructors, final boolean checkPropertyAccessors) throws Exception { configureByFile(path); - configureModule(getModule(), JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE); + TestUtilsPackage.configureAs(getModule(), JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE); boolean shouldFail = getTestName(false).equals("ClassWithConstVal"); AstAccessControl.INSTANCE$.testWithControlledAccessToAst( shouldFail, getProject(), getTestRootDisposable(), @@ -81,19 +76,6 @@ public abstract class AbstractResolveByStubTest extends KotlinCodeInsightTestCas ); } - private static void configureModule(@NotNull final Module module, @NotNull final LightProjectDescriptor descriptor) { - updateModel(module, new Consumer() { - @Override - public void consume(ModifiableRootModel model) { - if (descriptor.getSdk() != null) { - model.setSdk(descriptor.getSdk()); - } - ContentEntry entry = model.getContentEntries()[0]; - descriptor.configureModule(module, model, entry); - } - }); - } - @Override protected String getTestDataPath() { return ""; diff --git a/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt b/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt new file mode 100644 index 00000000000..59b12a9ecd7 --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt @@ -0,0 +1,55 @@ +/* + * Copyright 2010-2015 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.kotlin.idea.testUtils + +import com.intellij.openapi.module.Module +import com.intellij.openapi.roots.ModifiableRootModel +import com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel +import com.intellij.testFramework.LightProjectDescriptor +import com.intellij.util.Consumer +import org.jetbrains.kotlin.idea.JetStdJSProjectDescriptor +import org.jetbrains.kotlin.idea.ProjectDescriptorWithStdlibSources + +public enum class ModuleKind { + KOTLIN_JVM_WITH_STDLIB_SOURCES + KOTLIN_JAVASCRIPT +} + +public fun Module.configureAs(descriptor: LightProjectDescriptor) { + val module = this + updateModel(module, object : Consumer { + override fun consume(model: ModifiableRootModel) { + if (descriptor.getSdk() != null) { + model.setSdk(descriptor.getSdk()) + } + val entries = model.getContentEntries() + val entry = if (entries.size() > 0) entries[0] else null + descriptor.configureModule(module, model, entry) + } + }) +} + +public fun Module.configureAs(kind: ModuleKind) { + when(kind) { + ModuleKind.KOTLIN_JVM_WITH_STDLIB_SOURCES -> + this.configureAs(ProjectDescriptorWithStdlibSources.INSTANCE) + ModuleKind.KOTLIN_JAVASCRIPT -> + this.configureAs(JetStdJSProjectDescriptor.INSTANCE) + else -> throw IllegalArgumentException("Unknown kind=$kind") + } +} +