fix tests
This commit is contained in:
committed by
Natalia Ukhorskaya
parent
6f26972c50
commit
2a75d3f52a
@@ -25,6 +25,11 @@
|
|||||||
<artifactId>commons-io</artifactId>
|
<artifactId>commons-io</artifactId>
|
||||||
<version>2.4</version>
|
<version>2.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency> <!-- required in runtime -->
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jetbrains.kotlin</groupId>
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
<artifactId>kotlin-gradle-plugin-test</artifactId>
|
<artifactId>kotlin-gradle-plugin-test</artifactId>
|
||||||
|
|||||||
+10
-26
@@ -10,6 +10,8 @@ import java.util.Properties
|
|||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import org.gradle.api.initialization.dsl.ScriptHandler
|
import org.gradle.api.initialization.dsl.ScriptHandler
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
import java.lang.reflect.Method
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
|
|
||||||
abstract class KotlinBasePluginWrapper: Plugin<Project> {
|
abstract class KotlinBasePluginWrapper: Plugin<Project> {
|
||||||
val log = Logging.getLogger(this.javaClass)
|
val log = Logging.getLogger(this.javaClass)
|
||||||
@@ -27,24 +29,14 @@ abstract class KotlinBasePluginWrapper: Plugin<Project> {
|
|||||||
project.getExtensions().getExtraProperties()?.set("kotlin.gradle.plugin.version", kotlinPluginVersion)
|
project.getExtensions().getExtraProperties()?.set("kotlin.gradle.plugin.version", kotlinPluginVersion)
|
||||||
|
|
||||||
val pluginClassLoader = createPluginIsolatedClassLoader(kotlinPluginVersion, sourceBuildScript)
|
val pluginClassLoader = createPluginIsolatedClassLoader(kotlinPluginVersion, sourceBuildScript)
|
||||||
|
val plugin = getPlugin(pluginClassLoader, sourceBuildScript)
|
||||||
|
plugin.apply(project)
|
||||||
|
|
||||||
val cls = Class.forName(getPluginClassName(), true, pluginClassLoader)
|
project.getGradle().addBuildListener(FinishBuildListener(pluginClassLoader))
|
||||||
log.debug("Plugin class loaded")
|
|
||||||
|
|
||||||
val constructor = cls.getConstructor(javaClass<ScriptHandler>())
|
|
||||||
val method = cls.getMethod("apply", javaClass<Project>())
|
|
||||||
log.debug("'apply' method found, invoking...")
|
|
||||||
|
|
||||||
val plugin = constructor.newInstance(sourceBuildScript)
|
|
||||||
log.debug("Plugin class instantiated")
|
|
||||||
|
|
||||||
method?.invoke(plugin, project)
|
|
||||||
log.debug("'apply' method invoked successfully")
|
|
||||||
|
|
||||||
val gradle = project.javaClass.getMethod("getGradle").invoke(project) as Gradle
|
|
||||||
gradle.addBuildListener(FinishBuildListener(pluginClassLoader))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler): Plugin<Project>
|
||||||
|
|
||||||
private fun createPluginIsolatedClassLoader(projectVersion: String, sourceBuildScript: ScriptHandler): ParentLastURLClassLoader {
|
private fun createPluginIsolatedClassLoader(projectVersion: String, sourceBuildScript: ScriptHandler): ParentLastURLClassLoader {
|
||||||
val dependencyHandler: DependencyHandler = sourceBuildScript.getDependencies()
|
val dependencyHandler: DependencyHandler = sourceBuildScript.getDependencies()
|
||||||
val configurationsContainer: ConfigurationContainer = sourceBuildScript.getConfigurations()
|
val configurationsContainer: ConfigurationContainer = sourceBuildScript.getConfigurations()
|
||||||
@@ -81,8 +73,6 @@ abstract class KotlinBasePluginWrapper: Plugin<Project> {
|
|||||||
return projectVersion
|
return projectVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract fun getPluginClassName():String
|
|
||||||
|
|
||||||
private fun findSourceBuildScript(project: Project): ScriptHandler? {
|
private fun findSourceBuildScript(project: Project): ScriptHandler? {
|
||||||
log.debug("Looking for proper script handler")
|
log.debug("Looking for proper script handler")
|
||||||
var curProject = project
|
var curProject = project
|
||||||
@@ -102,20 +92,14 @@ abstract class KotlinBasePluginWrapper: Plugin<Project> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinPluginWrapper: KotlinBasePluginWrapper() {
|
open class KotlinPluginWrapper: KotlinBasePluginWrapper() {
|
||||||
public override fun getPluginClassName():String {
|
override fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler) = KotlinPlugin(scriptHandler, KotlinTasksProvider(pluginClassLoader))
|
||||||
return "org.jetbrains.kotlin.gradle.plugin.KotlinPlugin"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinAndriodPluginWrapper: KotlinBasePluginWrapper() {
|
open class KotlinAndriodPluginWrapper: KotlinBasePluginWrapper() {
|
||||||
public override fun getPluginClassName():String {
|
override fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler) = KotlinAndroidPlugin(scriptHandler, KotlinTasksProvider(pluginClassLoader))
|
||||||
return "org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open class Kotlin2JsPluginWrapper : KotlinBasePluginWrapper() {
|
open class Kotlin2JsPluginWrapper : KotlinBasePluginWrapper() {
|
||||||
public override fun getPluginClassName():String {
|
override fun getPlugin(pluginClassLoader: ParentLastURLClassLoader, scriptHandler: ScriptHandler) = Kotlin2JsPlugin(scriptHandler, KotlinTasksProvider(pluginClassLoader))
|
||||||
return "org.jetbrains.kotlin.gradle.plugin.Kotlin2JsPlugin"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user