[REVERTED] 161d11d Alexey Sedunov on 3/18/2016 at 14:00 (committed on 3/24/2016 at 18:42)
Spring Support: Test framework
This commit is contained in:
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.test.util
|
|||||||
|
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import com.intellij.testFramework.UsefulTestCase
|
|
||||||
import com.intellij.util.SmartFMap
|
import com.intellij.util.SmartFMap
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtPackageDirective
|
import org.jetbrains.kotlin.psi.KtPackageDirective
|
||||||
@@ -56,5 +55,3 @@ fun PsiFile.findElementsByCommentPrefix(prefix: String): Map<PsiElement, String>
|
|||||||
)
|
)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T: Any> Any?.assertInstanceOf() = UsefulTestCase.assertInstanceOf(this, T::class.java)
|
|
||||||
@@ -179,22 +179,19 @@ public class ConfigLibraryUtil {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addLibrary(@NotNull Module module, @NotNull String libraryName, @NotNull String rootPath, @NotNull String[] jarPaths) {
|
|
||||||
NewLibraryEditor editor = new NewLibraryEditor();
|
|
||||||
editor.setName(libraryName);
|
|
||||||
for (String jarPath : jarPaths) {
|
|
||||||
editor.addRoot(VfsUtil.getUrlForLibraryRoot(new File(rootPath, jarPath)), OrderRootType.CLASSES);
|
|
||||||
}
|
|
||||||
|
|
||||||
addLibrary(editor, module);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void configureLibrariesByDirective(@NotNull Module module, String rootPath, String fileText) {
|
public static void configureLibrariesByDirective(@NotNull Module module, String rootPath, String fileText) {
|
||||||
for (String libraryInfo : InTextDirectivesUtils.findListWithPrefixes(fileText, "// CONFIGURE_LIBRARY: ")) {
|
for (String libraryInfo : InTextDirectivesUtils.findListWithPrefixes(fileText, "// CONFIGURE_LIBRARY: ")) {
|
||||||
int i = libraryInfo.indexOf('@');
|
int i = libraryInfo.indexOf('@');
|
||||||
String libraryName = libraryInfo.substring(0, i);
|
String libraryName = libraryInfo.substring(0, i);
|
||||||
String[] jarPaths = libraryInfo.substring(i + 1).split(";");
|
String[] jarPaths = libraryInfo.substring(i + 1).split(";");
|
||||||
addLibrary(module, libraryName, rootPath, jarPaths);
|
|
||||||
|
NewLibraryEditor editor = new NewLibraryEditor();
|
||||||
|
editor.setName(libraryName);
|
||||||
|
for (String jarPath : jarPaths) {
|
||||||
|
editor.addRoot(VfsUtil.getUrlForLibraryRoot(new File(rootPath, jarPath)), OrderRootType.CLASSES);
|
||||||
|
}
|
||||||
|
|
||||||
|
addLibrary(editor, module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 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.test
|
|
||||||
|
|
||||||
import com.intellij.openapi.module.Module
|
|
||||||
import com.intellij.util.SmartFMap
|
|
||||||
|
|
||||||
interface TestFixtureExtension {
|
|
||||||
fun setUp(module: Module)
|
|
||||||
fun tearDown()
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
@Volatile
|
|
||||||
private var instances = SmartFMap.emptyMap<String, TestFixtureExtension>()
|
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
fun loadFixture(className: String, module: Module): TestFixtureExtension {
|
|
||||||
instances[className]?.let { return it }
|
|
||||||
|
|
||||||
return (Class.forName(className).newInstance() as TestFixtureExtension).apply {
|
|
||||||
this.setUp(module)
|
|
||||||
instances = instances.plus(className, this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <reified T : TestFixtureExtension> loadFixture(module: Module) = loadFixture(T::class.qualifiedName!!, module) as T
|
|
||||||
|
|
||||||
fun getFixture(className: String) = instances[className]
|
|
||||||
|
|
||||||
inline fun <reified T : TestFixtureExtension> getFixture() = getFixture(T::class.qualifiedName!!) as? T
|
|
||||||
|
|
||||||
fun unloadFixture(className: String) {
|
|
||||||
instances[className]?.let {
|
|
||||||
it.tearDown()
|
|
||||||
instances = instances.minus(className)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <reified T : TestFixtureExtension> unloadFixture() = unloadFixture(T::class.qualifiedName!!)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-65
@@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 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.spring.tests
|
|
||||||
|
|
||||||
import com.intellij.facet.impl.FacetUtil
|
|
||||||
import com.intellij.openapi.module.Module
|
|
||||||
import com.intellij.spring.facet.SpringFacet
|
|
||||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
|
||||||
import org.jetbrains.kotlin.idea.test.TestFixtureExtension
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
class SpringTestFixtureExtension() : TestFixtureExtension {
|
|
||||||
private var module: Module? = null
|
|
||||||
|
|
||||||
enum class SpringFramework(val version: String, vararg val artifactIds: String) {
|
|
||||||
FRAMEWORK_4_2_0(
|
|
||||||
"4.2.0.RELEASE",
|
|
||||||
"core", "beans", "context"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
val SPRING_LIBRARY_ROOT = "${PluginTestCaseBase.getTestDataPathBase()}/spring/_lib"
|
|
||||||
|
|
||||||
override fun setUp(module: Module) {
|
|
||||||
this.module = module
|
|
||||||
val library = SpringFramework.FRAMEWORK_4_2_0
|
|
||||||
val libraryPath = "$SPRING_LIBRARY_ROOT/spring/${library.version}/"
|
|
||||||
val jarNames = HashSet<String>(library.artifactIds.size)
|
|
||||||
for (id in library.artifactIds) {
|
|
||||||
jarNames.add("spring-$id-${library.version}.jar")
|
|
||||||
}
|
|
||||||
ConfigLibraryUtil.addLibrary(module, "spring" + library.version, libraryPath, jarNames.toTypedArray())
|
|
||||||
|
|
||||||
FacetUtil.addFacet(module, SpringFacet.getSpringFacetType())
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun tearDown() {
|
|
||||||
try {
|
|
||||||
// clear existing SpringFacet configuration before running next test
|
|
||||||
module?.let { SpringFacet.getInstance(it) }?.let {
|
|
||||||
it.removeFileSets()
|
|
||||||
FacetUtil.deleteFacet(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
module = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -135,20 +135,6 @@
|
|||||||
<move file="dependencies/apache-ant-@{version}" tofile="dependencies/@{folderName}"/>
|
<move file="dependencies/apache-ant-@{version}" tofile="dependencies/@{folderName}"/>
|
||||||
</sequential>
|
</sequential>
|
||||||
</macrodef>
|
</macrodef>
|
||||||
<macrodef name="get-spring-library">
|
|
||||||
<attribute name="lib"/>
|
|
||||||
<attribute name="version"/>
|
|
||||||
|
|
||||||
<sequential>
|
|
||||||
<get-maven-library
|
|
||||||
server="http://central.maven.org/maven2"
|
|
||||||
prefix="org/springframework"
|
|
||||||
lib="@{lib}"
|
|
||||||
version="@{version}"
|
|
||||||
src="false"
|
|
||||||
dependencies="idea/testData/spring/_lib/spring/@{version}"/>
|
|
||||||
</sequential>
|
|
||||||
</macrodef>
|
|
||||||
|
|
||||||
<target name="make-native-platform-uberjar">
|
<target name="make-native-platform-uberjar">
|
||||||
<property name="dependencies" value="dependencies"/>
|
<property name="dependencies" value="dependencies"/>
|
||||||
@@ -334,12 +320,6 @@
|
|||||||
<antcall target="override-version"/>
|
<antcall target="override-version"/>
|
||||||
|
|
||||||
<download-or-build-markdown-parser/>
|
<download-or-build-markdown-parser/>
|
||||||
|
|
||||||
<sequential if:set="use.ultimate.by.default">
|
|
||||||
<get-spring-library lib="spring-core" version="4.2.0.RELEASE"/>
|
|
||||||
<get-spring-library lib="spring-beans" version="4.2.0.RELEASE"/>
|
|
||||||
<get-spring-library lib="spring-context" version="4.2.0.RELEASE"/>
|
|
||||||
</sequential>
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<macrodef name="get_android_sdk">
|
<macrodef name="get_android_sdk">
|
||||||
|
|||||||
Reference in New Issue
Block a user