add testUtils

This commit is contained in:
Michael Nedzelsky
2015-04-02 22:38:20 +03:00
parent c0e6fa62a0
commit 7b17ae3b8b
2 changed files with 57 additions and 20 deletions
@@ -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<ModifiableRootModel>() {
@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 "";
@@ -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<ModifiableRootModel> {
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")
}
}