diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index e796ef63f5f..21d92effb46 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -142,15 +142,15 @@ import org.jetbrains.kotlin.completion.handlers.AbstractKeywordCompletionHandler import org.jetbrains.kotlin.idea.kdoc.AbstractKDocHighlightingTest import org.jetbrains.kotlin.addImport.AbstractAddImportTest import org.jetbrains.kotlin.idea.highlighter.* -import org.jetbrains.jet.lang.resolve.android.AbstractAndroidXml2KConversionTest import org.jetbrains.jet.android.AbstractCrossParserTest -import org.jetbrains.jet.lang.resolve.android.AbstractAndroidBoxTest import org.jetbrains.jet.android.AbstractAndroidCompletionTest import org.jetbrains.jet.android.AbstractAndroidGotoTest import org.jetbrains.jet.jps.build.android.AbstractAndroidJpsTestCase import org.jetbrains.jet.android.AbstractAndroidRenameTest import org.jetbrains.jet.android.AbstractAndroidFindUsagesTest -import org.jetbrains.jet.lang.resolve.android.AbstractAndroidBytecodeShapeTest +import org.jetbrains.jet.lang.resolve.android.test.AbstractAndroidBytecodeShapeTest +import org.jetbrains.jet.lang.resolve.android.test.AbstractAndroidXml2KConversionTest +import org.jetbrains.jet.lang.resolve.android.test.AbstractAndroidBoxTest fun main(args: Array) { System.setProperty("java.awt.headless", "true") diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt b/plugins/android-compiler-plugin/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt index 76365cbc369..08988a5f431 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/jet/lang/resolve/android/AndroidUtil.kt @@ -62,7 +62,7 @@ public fun isRClassField(element: PsiElement): Boolean { if (outerClass !is PsiClass) return false val processor = ServiceManager.getService(element.getProject(), javaClass()) val packageName = processor?.resourceManager?.readManifest()?._package - if ((outerClass as PsiClass).getQualifiedName()?.startsWith(packageName ?: "") ?: false) + if ((outerClass : PsiClass).getQualifiedName()?.startsWith(packageName ?: "") ?: false) true else false } else false diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidTestDeclarationsProvider.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidTestDeclarationsProvider.kt deleted file mode 100644 index dac02fab424..00000000000 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidTestDeclarationsProvider.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2014 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.lang.resolve.android - -import com.intellij.openapi.project.Project -import org.jetbrains.jet.extensions.ExternalDeclarationsProvider -import org.jetbrains.jet.lang.psi.JetFile -import org.jetbrains.jet.utils.emptyOrSingletonList - -private class AndroidTestDeclarationsProvider( - val project: Project, - val resPath: String, - val manifestPath: String -) : ExternalDeclarationsProvider { - override fun getExternalDeclarations(): Collection { - val parser = CliAndroidUIXmlProcessor(project, resPath, manifestPath) - return emptyOrSingletonList(parser.parseToPsi(project)) - } -} \ No newline at end of file diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidBoxTest.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidBoxTest.kt similarity index 65% rename from plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidBoxTest.kt rename to plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidBoxTest.kt index a3b820f0848..f1f1a7901ae 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidBoxTest.kt +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidBoxTest.kt @@ -14,30 +14,22 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.android +package org.jetbrains.jet.lang.resolve.android.test import org.jetbrains.jet.codegen.generated.AbstractBlackBoxCodegenTest +import org.jetbrains.jet.config.CompilerConfiguration +import java.io.File +import com.intellij.util.Processor import org.jetbrains.jet.ConfigurationKind import org.jetbrains.jet.TestJdkKind -import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys -import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment import org.jetbrains.jet.JetTestUtils +import java.util.regex.Pattern +import com.intellij.openapi.util.io.FileUtil +import java.util.ArrayList import java.util.Collections import com.intellij.util.ArrayUtil -import com.intellij.openapi.util.io.FileUtil -import java.io.File -import java.util.ArrayList -import com.intellij.util.Processor -import org.jetbrains.jet.codegen.CodegenTestFiles -import java.util.regex.Pattern -import org.jetbrains.jet.config.CompilerConfiguration -import org.jetbrains.kotlin.android.AndroidConfigurationKeys import org.jetbrains.jet.JetTestCaseBuilder -import com.intellij.openapi.application.PathManager -import org.jetbrains.jet.extensions.ExternalDeclarationsProvider -import org.jetbrains.kotlin.android.AndroidExpressionCodegen -import org.jetbrains.jet.codegen.extensions.ExpressionCodegenExtension -import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles +import org.jetbrains.jet.codegen.CodegenTestFiles public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { @@ -52,12 +44,7 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) { val resPath = path + "layout/" val manifestPath = path + "AndroidManifest.xml" - configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPath) - configuration.put(AndroidConfigurationKeys.ANDROID_MANIFEST, manifestPath) - myEnvironment = JetCoreEnvironment.createForTests(getTestRootDisposable()!!, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) - val project = myEnvironment.getProject() - ExternalDeclarationsProvider.registerExtension(project, AndroidTestDeclarationsProvider(project, resPath, manifestPath)) - ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegen()) + myEnvironment = createAndroidTestEnvironment(configuration, resPath, manifestPath) } public fun doCompileAgainstAndroidSdkTest(path: String) { @@ -80,11 +67,8 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { return !FileUtil.findFilesByMask(Pattern.compile("^0.kt$"), File(path)).empty } - override fun relativePath(file: File): String { - val stringToCut = "plugins/android-compiler-plugin/testData/codegen/" - val systemIndependentPath = file.getPath().replace(File.separatorChar, '/') - assert(systemIndependentPath.startsWith(stringToCut), "File path is not absolute: $file ") - return systemIndependentPath.substring(stringToCut.length()) + override fun codegenTestBasePath(): String { + return "plugins/android-compiler-plugin/testData/codegen/" } private fun doMultiFileTest(path: String, additionalFiles: Collection? = null) { @@ -92,9 +76,15 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { FileUtil.processFilesRecursively(File(path), object : Processor { override fun process(file: File?): Boolean { when (file!!.getName()) { - "1.kt" -> { if (additionalFiles == null) files.add(relativePath(file)) } - "0.kt" -> { if (additionalFiles != null) files.add(relativePath(file)) } - else -> { if (file.getName().endsWith(".kt")) files.add(relativePath(file)) } + "1.kt" -> { + if (additionalFiles == null) files.add(relativePath(file)) + } + "0.kt" -> { + if (additionalFiles != null) files.add(relativePath(file)) + } + else -> { + if (file.getName().endsWith(".kt")) files.add(relativePath(file)) + } } return true } @@ -110,4 +100,4 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { ) blackBox(); } -} +} \ No newline at end of file diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidBytecodeShapeTest.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidBytecodeShapeTest.kt similarity index 78% rename from plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidBytecodeShapeTest.kt rename to plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidBytecodeShapeTest.kt index d1ec3992f04..9e996edcb9f 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidBytecodeShapeTest.kt +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidBytecodeShapeTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.android +package org.jetbrains.jet.lang.resolve.android.test import org.jetbrains.jet.codegen.AbstractBytecodeTextTest import org.jetbrains.jet.JetTestUtils @@ -42,12 +42,7 @@ public abstract class AbstractAndroidBytecodeShapeTest : AbstractBytecodeTextTes private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) { val resPath = path + "res/layout/" val manifestPath = path + "../AndroidManifest.xml" - configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPath) - configuration.put(AndroidConfigurationKeys.ANDROID_MANIFEST, manifestPath) - myEnvironment = JetCoreEnvironment.createForTests(getTestRootDisposable()!!, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) - val project = myEnvironment.getProject() - ExternalDeclarationsProvider.registerExtension(project, AndroidTestDeclarationsProvider(project, resPath, manifestPath)) - ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegen()) + myEnvironment = createAndroidTestEnvironment(configuration, resPath, manifestPath) } public override fun doTest(path: String) { diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidXml2KConversionTest.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidXml2KConversionTest.kt similarity index 92% rename from plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidXml2KConversionTest.kt rename to plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidXml2KConversionTest.kt index ffb21a741b3..b0e39516294 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AbstractAndroidXml2KConversionTest.kt +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AbstractAndroidXml2KConversionTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.android +package org.jetbrains.jet.lang.resolve.android.test import com.intellij.testFramework.UsefulTestCase import java.io.File @@ -30,6 +30,8 @@ import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys import org.junit.Assert import kotlin.test.fail import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles +import org.jetbrains.jet.lang.resolve.android.CliAndroidUIXmlProcessor +import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlProcessor public abstract class AbstractAndroidXml2KConversionTest : UsefulTestCase() { diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidBoxTestGenerated.java b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidBoxTestGenerated.java similarity index 98% rename from plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidBoxTestGenerated.java rename to plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidBoxTestGenerated.java index 29cf9a315be..626f2e5ef0b 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidBoxTestGenerated.java +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidBoxTestGenerated.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.android; +package org.jetbrains.jet.lang.resolve.android.test; import com.intellij.testFramework.TestDataPath; import org.jetbrains.jet.JUnit3RunnerWithInners; diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidBytecodeShapeTestGenerated.java b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidBytecodeShapeTestGenerated.java similarity index 97% rename from plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidBytecodeShapeTestGenerated.java rename to plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidBytecodeShapeTestGenerated.java index 6f56a861057..4ae0249cea5 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidBytecodeShapeTestGenerated.java +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidBytecodeShapeTestGenerated.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.android; +package org.jetbrains.jet.lang.resolve.android.test; import com.intellij.testFramework.TestDataPath; import org.jetbrains.jet.JUnit3RunnerWithInners; diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidXml2KConversionTestGenerated.java b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidXml2KConversionTestGenerated.java similarity index 98% rename from plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidXml2KConversionTestGenerated.java rename to plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidXml2KConversionTestGenerated.java index 086340c47ff..28379255a45 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/AndroidXml2KConversionTestGenerated.java +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/AndroidXml2KConversionTestGenerated.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.android; +package org.jetbrains.jet.lang.resolve.android.test; import com.intellij.testFramework.TestDataPath; import org.jetbrains.jet.JUnit3RunnerWithInners; diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/CompilerTestUtils.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/CompilerTestUtils.kt new file mode 100644 index 00000000000..5a33bc50a43 --- /dev/null +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/jet/lang/resolve/android/test/CompilerTestUtils.kt @@ -0,0 +1,55 @@ +/* + * Copyright 2010-2014 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.lang.resolve.android.test + +import com.intellij.openapi.project.Project +import org.jetbrains.jet.extensions.ExternalDeclarationsProvider +import org.jetbrains.jet.lang.psi.JetFile +import org.jetbrains.jet.utils.emptyOrSingletonList +import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment +import org.jetbrains.kotlin.android.AndroidConfigurationKeys +import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles +import org.jetbrains.jet.codegen.extensions.ExpressionCodegenExtension +import org.jetbrains.kotlin.android.AndroidExpressionCodegen +import org.jetbrains.jet.config.CompilerConfiguration +import com.intellij.testFramework.UsefulTestCase +import org.jetbrains.jet.lang.resolve.android.CliAndroidUIXmlProcessor + +private class AndroidTestDeclarationsProvider( + val project: Project, + val resPath: String, + val manifestPath: String +) : ExternalDeclarationsProvider { + override fun getExternalDeclarations(): Collection { + val parser = CliAndroidUIXmlProcessor(project, resPath, manifestPath) + return emptyOrSingletonList(parser.parseToPsi(project)) + } +} + +fun UsefulTestCase.createAndroidTestEnvironment( + configuration: CompilerConfiguration, + resPath: String, + manifestPath: String): JetCoreEnvironment +{ + configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPath) + configuration.put(AndroidConfigurationKeys.ANDROID_MANIFEST, manifestPath) + val myEnvironment = JetCoreEnvironment.createForTests(getTestRootDisposable()!!, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) + val project = myEnvironment.getProject() + ExternalDeclarationsProvider.registerExtension(project, AndroidTestDeclarationsProvider(project, resPath, manifestPath)) + ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegen()) + return myEnvironment +}