Android compiler tests moved to test package

This commit is contained in:
Yan Zhulanow
2014-12-08 22:23:20 +03:00
parent 23053a2be2
commit 15f7f6e08e
10 changed files with 88 additions and 79 deletions
@@ -142,15 +142,15 @@ import org.jetbrains.kotlin.completion.handlers.AbstractKeywordCompletionHandler
import org.jetbrains.kotlin.idea.kdoc.AbstractKDocHighlightingTest import org.jetbrains.kotlin.idea.kdoc.AbstractKDocHighlightingTest
import org.jetbrains.kotlin.addImport.AbstractAddImportTest import org.jetbrains.kotlin.addImport.AbstractAddImportTest
import org.jetbrains.kotlin.idea.highlighter.* import org.jetbrains.kotlin.idea.highlighter.*
import org.jetbrains.jet.lang.resolve.android.AbstractAndroidXml2KConversionTest
import org.jetbrains.jet.android.AbstractCrossParserTest 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.AbstractAndroidCompletionTest
import org.jetbrains.jet.android.AbstractAndroidGotoTest import org.jetbrains.jet.android.AbstractAndroidGotoTest
import org.jetbrains.jet.jps.build.android.AbstractAndroidJpsTestCase import org.jetbrains.jet.jps.build.android.AbstractAndroidJpsTestCase
import org.jetbrains.jet.android.AbstractAndroidRenameTest import org.jetbrains.jet.android.AbstractAndroidRenameTest
import org.jetbrains.jet.android.AbstractAndroidFindUsagesTest 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<String>) { fun main(args: Array<String>) {
System.setProperty("java.awt.headless", "true") System.setProperty("java.awt.headless", "true")
@@ -62,7 +62,7 @@ public fun isRClassField(element: PsiElement): Boolean {
if (outerClass !is PsiClass) return false if (outerClass !is PsiClass) return false
val processor = ServiceManager.getService<AndroidUIXmlProcessor>(element.getProject(), javaClass<AndroidUIXmlProcessor>()) val processor = ServiceManager.getService<AndroidUIXmlProcessor>(element.getProject(), javaClass<AndroidUIXmlProcessor>())
val packageName = processor?.resourceManager?.readManifest()?._package val packageName = processor?.resourceManager?.readManifest()?._package
if ((outerClass as PsiClass).getQualifiedName()?.startsWith(packageName ?: "") ?: false) if ((outerClass : PsiClass).getQualifiedName()?.startsWith(packageName ?: "") ?: false)
true else false true else false
} }
else false else false
@@ -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<JetFile> {
val parser = CliAndroidUIXmlProcessor(project, resPath, manifestPath)
return emptyOrSingletonList(parser.parseToPsi(project))
}
}
@@ -14,30 +14,22 @@
* limitations under the License. * 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.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.ConfigurationKind
import org.jetbrains.jet.TestJdkKind 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 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 java.util.Collections
import com.intellij.util.ArrayUtil 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 org.jetbrains.jet.JetTestCaseBuilder
import com.intellij.openapi.application.PathManager import org.jetbrains.jet.codegen.CodegenTestFiles
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
public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() {
@@ -52,12 +44,7 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() {
private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) { private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) {
val resPath = path + "layout/" val resPath = path + "layout/"
val manifestPath = path + "AndroidManifest.xml" val manifestPath = path + "AndroidManifest.xml"
configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPath) myEnvironment = createAndroidTestEnvironment(configuration, resPath, manifestPath)
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())
} }
public fun doCompileAgainstAndroidSdkTest(path: String) { public fun doCompileAgainstAndroidSdkTest(path: String) {
@@ -80,11 +67,8 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() {
return !FileUtil.findFilesByMask(Pattern.compile("^0.kt$"), File(path)).empty return !FileUtil.findFilesByMask(Pattern.compile("^0.kt$"), File(path)).empty
} }
override fun relativePath(file: File): String { override fun codegenTestBasePath(): String {
val stringToCut = "plugins/android-compiler-plugin/testData/codegen/" return "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())
} }
private fun doMultiFileTest(path: String, additionalFiles: Collection<String>? = null) { private fun doMultiFileTest(path: String, additionalFiles: Collection<String>? = null) {
@@ -92,9 +76,15 @@ public abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() {
FileUtil.processFilesRecursively(File(path), object : Processor<File> { FileUtil.processFilesRecursively(File(path), object : Processor<File> {
override fun process(file: File?): Boolean { override fun process(file: File?): Boolean {
when (file!!.getName()) { when (file!!.getName()) {
"1.kt" -> { if (additionalFiles == null) files.add(relativePath(file)) } "1.kt" -> {
"0.kt" -> { if (additionalFiles != null) files.add(relativePath(file)) } if (additionalFiles == null) files.add(relativePath(file))
else -> { if (file.getName().endsWith(".kt")) 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 return true
} }
@@ -14,7 +14,7 @@
* limitations under the License. * 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.codegen.AbstractBytecodeTextTest
import org.jetbrains.jet.JetTestUtils import org.jetbrains.jet.JetTestUtils
@@ -42,12 +42,7 @@ public abstract class AbstractAndroidBytecodeShapeTest : AbstractBytecodeTextTes
private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) { private fun createEnvironmentForConfiguration(configuration: CompilerConfiguration, path: String) {
val resPath = path + "res/layout/" val resPath = path + "res/layout/"
val manifestPath = path + "../AndroidManifest.xml" val manifestPath = path + "../AndroidManifest.xml"
configuration.put(AndroidConfigurationKeys.ANDROID_RES_PATH, resPath) myEnvironment = createAndroidTestEnvironment(configuration, resPath, manifestPath)
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())
} }
public override fun doTest(path: String) { public override fun doTest(path: String) {
@@ -14,7 +14,7 @@
* limitations under the License. * 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 com.intellij.testFramework.UsefulTestCase
import java.io.File import java.io.File
@@ -30,6 +30,8 @@ import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys
import org.junit.Assert import org.junit.Assert
import kotlin.test.fail import kotlin.test.fail
import org.jetbrains.jet.cli.jvm.compiler.EnvironmentConfigFiles 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() { public abstract class AbstractAndroidXml2KConversionTest : UsefulTestCase() {
@@ -14,7 +14,7 @@
* limitations under the License. * 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 com.intellij.testFramework.TestDataPath;
import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JUnit3RunnerWithInners;
@@ -14,7 +14,7 @@
* limitations under the License. * 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 com.intellij.testFramework.TestDataPath;
import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JUnit3RunnerWithInners;
@@ -14,7 +14,7 @@
* limitations under the License. * 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 com.intellij.testFramework.TestDataPath;
import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JUnit3RunnerWithInners;
@@ -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<JetFile> {
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
}