diff --git a/build.gradle.kts b/build.gradle.kts index 668e8a64a14..0e6c3d7bea3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -129,6 +129,7 @@ extra["versions.json"] = "20160807" extra["versions.native-platform"] = "0.14" extra["versions.ant-launcher"] = "1.8.0" extra["versions.robolectric"] = "3.1" +extra["versions.org.springframework"] = "4.2.0.RELEASE" val markdownVer = "4054 - Kotlin 1.0.2-dev-566".replace(" ", "%20") // fixed here, was last with "status:SUCCESS,tag:forKotlin" extra["markdownParserRepo"] = "https://teamcity.jetbrains.com/guestAuth/repository/download/IntelliJMarkdownParser_Build/$markdownVer/([artifact]_[ext]/)[artifact](.[ext])" diff --git a/buildSrc/src/main/kotlin/dependencies.kt b/buildSrc/src/main/kotlin/dependencies.kt index 624b5f4713a..a246a4b6d4c 100644 --- a/buildSrc/src/main/kotlin/dependencies.kt +++ b/buildSrc/src/main/kotlin/dependencies.kt @@ -14,15 +14,22 @@ import java.io.File fun Project.commonDep(coord: String): String { val parts = coord.split(':') return when (parts.size) { - 1 -> "$coord:$coord:${rootProject.extra["versions.$coord"]}" - 2 -> "${parts[0]}:${parts[1]}:${rootProject.extra["versions.${parts[1]}"]}" + 1 -> "$coord:$coord:${commonVer(coord, coord)}" + 2 -> "${parts[0]}:${parts[1]}:${commonVer(parts[0], parts[1])}" 3 -> coord else -> throw IllegalArgumentException("Illegal maven coordinates: $coord") } } fun Project.commonDep(group: String, artifact: String, vararg suffixesAndClassifiers: String): String = - "$group:$artifact${suffixesAndClassifiers.filterNot { it.startsWith(':') }.joinToString("")}:${rootProject.extra["versions.$artifact"]}${suffixesAndClassifiers.filter { it.startsWith(':') }.joinToString("")}" + "$group:$artifact${suffixesAndClassifiers.filterNot { it.startsWith(':') }.joinToString("")}:${commonVer(group, artifact)}${suffixesAndClassifiers.filter { it.startsWith(':') }.joinToString("")}" + +fun Project.commonVer(group: String, artifact: String) = + when { + rootProject.extra.has("versions.$artifact") -> rootProject.extra["versions.$artifact"] + rootProject.extra.has("versions.$group") -> rootProject.extra["versions.$group"] + else -> throw GradleException("Neither versions.$artifact nor versions.$group is defined in the root project's extra") + } fun Project.preloadedDeps(vararg artifactBaseNames: String, baseDir: File = File(rootDir, "dependencies"), subdir: String? = null, optional: Boolean = false): ConfigurableFileCollection { val dir = if (subdir != null) File(baseDir, subdir) else baseDir diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt index d3e326e0f07..e83772df1fe 100644 --- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt +++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt @@ -159,11 +159,12 @@ object ConfigLibraryUtil { } } - fun addLibrary(module: Module, libraryName: String, rootPath: String, jarPaths: Array) { + fun addLibrary(module: Module, libraryName: String, rootPath: String?, jarPaths: Array) { val editor = NewLibraryEditor() editor.name = libraryName for (jarPath in jarPaths) { - editor.addRoot(VfsUtil.getUrlForLibraryRoot(File(rootPath, jarPath)), OrderRootType.CLASSES) + val jarFile = if (rootPath == null) File(jarPath) else File(rootPath, jarPath) + editor.addRoot(VfsUtil.getUrlForLibraryRoot(jarFile), OrderRootType.CLASSES) } addLibrary(editor, module) diff --git a/ultimate/build.gradle.kts b/ultimate/build.gradle.kts index acda98935cc..cff3d7c81c2 100644 --- a/ultimate/build.gradle.kts +++ b/ultimate/build.gradle.kts @@ -41,6 +41,8 @@ val ideaProjectResources = project(":idea").the().sourceS evaluationDependsOn(":prepare:idea-plugin") +val springClasspath by configurations.creating + dependencies { compileOnly(project(":kotlin-reflect-api")) compile(projectDist(":kotlin-stdlib")) @@ -90,6 +92,12 @@ dependencies { testRuntime(project(":plugins:uast-kotlin-idea")) testRuntime(files("${System.getProperty("java.home")}/../lib/tools.jar")) testRuntime(project(":plugins:kapt3-idea")) { isTransitive = false } + + springClasspath(commonDep("org.springframework", "spring-core")) + springClasspath(commonDep("org.springframework", "spring-beans")) + springClasspath(commonDep("org.springframework", "spring-context")) + springClasspath(commonDep("org.springframework", "spring-tx")) + springClasspath(commonDep("org.springframework", "spring-web")) } afterEvaluate { @@ -195,6 +203,9 @@ projectTest { dependsOn(prepareResources) dependsOn(preparePluginXml) workingDir = rootDir + doFirst { + systemProperty("spring.classpath", springClasspath.asPath) + } } val generateTests by generator("org.jetbrains.kotlin.tests.GenerateUltimateTestsKt") diff --git a/ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt b/ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt index 69c99044644..115a9c082ec 100644 --- a/ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt +++ b/ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt @@ -30,31 +30,19 @@ import com.intellij.util.PathUtil import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.TestFixtureExtension import org.jetbrains.kotlin.test.InTextDirectivesUtils -import org.jetbrains.kotlin.tests.ULTIMATE_TEST_ROOT -import java.util.* +import java.io.File @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", "tx", "web" - ) - } - - val SPRING_LIBRARY_ROOT = "$ULTIMATE_TEST_ROOT/dependencies/spring" - override fun setUp(module: Module) { this.module = module - val library = SpringFramework.FRAMEWORK_4_2_0 - val libraryPath = "$SPRING_LIBRARY_ROOT/${library.version}/" - val jarNames = HashSet(library.artifactIds.size) - for (id in library.artifactIds) { - jarNames.add("spring-$id-${library.version}.jar") - } - ConfigLibraryUtil.addLibrary(module, "spring" + library.version, libraryPath, jarNames.toTypedArray()) + + val springClasspath = System.getProperty("spring.classpath") + ?: throw RuntimeException("Unable to get a valid classpath from 'spring.classpath' property, please set it accordingly"); + + ConfigLibraryUtil.addLibrary(module, "spring", null, springClasspath.split(File.pathSeparator).toTypedArray()) FacetUtil.addFacet(module, SpringFacet.getSpringFacetType()) } @@ -79,7 +67,7 @@ class SpringTestFixtureExtension() : TestFixtureExtension { facet.removeFileSets() FacetUtil.deleteFacet(facet) } - ConfigLibraryUtil.removeLibrary(module, "spring" + SpringFramework.FRAMEWORK_4_2_0.version) + ConfigLibraryUtil.removeLibrary(module, "spring") } } finally { diff --git a/ultimate/update_dependencies.xml b/ultimate/update_dependencies.xml index 9638f4e5b59..9b4b0506e9e 100644 --- a/ultimate/update_dependencies.xml +++ b/ultimate/update_dependencies.xml @@ -9,22 +9,6 @@ - - - - - - - - - @@ -35,12 +19,6 @@ - - - - - -