diff --git a/libraries/tools/kotlin-gradle-plugin-core/pom.xml b/libraries/tools/kotlin-gradle-plugin-core/pom.xml
index 3678fdcfb48..a868d57bd50 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/pom.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/pom.xml
@@ -27,9 +27,9 @@
provided
- junit
- junit
- 4.11
+ org.jetbrains.kotlin
+ kotlin-gradle-plugin-test
+ ${project.version}
test
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
index 5e8be9c55d4..3933b283c3c 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
@@ -111,12 +111,8 @@ open class KotlinPlugin: Plugin {
}
project.getTasks()?.withType(javaClass(), object : Action {
- override fun execute(param: KDoc?) {
- param?.getConventionMapping()?.map("destinationDir", object : Callable {
- override fun call(): Any {
- return File(javaPluginConvention.getDocsDir(), "kdoc");
- }
- })
+ override fun execute(task: KDoc?) {
+ task!!.destinationDir = File(javaPluginConvention.getDocsDir(), "kdoc")
}
})
}
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
index 6f5e17ce2bb..56ead70246b 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
@@ -25,6 +25,9 @@ import org.apache.commons.lang.StringUtils
import org.gradle.api.initialization.dsl.ScriptHandler
import org.apache.commons.io.FileUtils
import org.jetbrains.kotlin.gradle.plugin.*
+import org.jetbrains.kotlin.doc.KDocConfig
+import java.util.concurrent.Callable
+import org.gradle.api.Project
public open class KotlinCompile(): AbstractCompile() {
@@ -40,7 +43,7 @@ public open class KotlinCompile(): AbstractCompile() {
override fun setSource(source: Any?) {
srcDirsRoots.clear()
if (source is SourceDirectorySet) {
- srcDirsRoots.addAll(source.getSrcDirs()!!)
+ srcDirsRoots.addAll(source.getSrcDirs())
}
super.setSource(source)
}
@@ -49,7 +52,7 @@ public open class KotlinCompile(): AbstractCompile() {
override fun source(vararg sources: Any?): SourceTask? {
for (source in sources) {
if (source is SourceDirectorySet) {
- srcDirsRoots.addAll(source.getSrcDirs()!!)
+ srcDirsRoots.addAll(source.getSrcDirs())
}
}
return super.source(sources)
@@ -104,7 +107,7 @@ public open class KotlinCompile(): AbstractCompile() {
args.outputDir = if (StringUtils.isEmpty(kotlinOptions.outputDir)) { kotlinDestinationDir?.getPath() } else { kotlinOptions.outputDir }
- val embeddedAnnotations = getAnnotations()
+ val embeddedAnnotations = getAnnotations(getProject(), logger)
val userAnnotations = (kotlinOptions.annotations ?: "").split(File.pathSeparatorChar).toList()
val allAnnotations = if (kotlinOptions.noJdkAnnotations) userAnnotations else userAnnotations.plus(embeddedAnnotations.map {it.getPath()})
args.annotations = allAnnotations.makeString(File.pathSeparator)
@@ -127,91 +130,53 @@ public open class KotlinCompile(): AbstractCompile() {
FileUtils.copyDirectory(outputDirFile, getDestinationDir())
}
}
-
- fun getAnnotations(): Collection {
- val annotations = getProject().getExtensions().getByName(DEFAULT_ANNOTATIONS) as Collection
-
- if (!annotations.isEmpty()) {
- logger.info("using default annontations from [${annotations.map {it.getPath()}}]")
- return annotations
- } else {
- throw GradleException("Default annotations not found in Kotlin gradle plugin classpath")
- }
- }
}
public open class KDoc(): SourceTask() {
+
val logger = Logging.getLogger(getClass())
- /**
- * Returns the directory to use to output the API docs
- */
- public var destinationDir: String = ""
+ public var kdocArgs: KDocArguments = KDocArguments()
- /**
- * Returns the name of the documentation set
- */
- public var title: String = ""
-
- /**
- * Returns the version name of the documentation set
- */
- public var version: String = ""
-
- /**
- * Returns a map of the package prefix to the HTML URL for the root of the apidoc using javadoc/kdoc style
- * directory layouts so that this API doc report can link to external packages
- */
- public var packagePrefixToUrls: Map = HashMap()
-
- /**
- * Returns a Set of the package name prefixes to ignore from the KDoc report
- */
- public var ignorePackages: Set = HashSet()
-
- /**
- * Returns true if a warning should be generated if there are no comments
- * on documented function or property
- */
- public var warnNoComments: Boolean = true
-
- /**
- * Returns the HTTP URL of the root directory of source code that we should link to
- */
- public var sourceRootHref: String = ""
-
- /**
- * The root project directory used to deduce relative file names when linking to source code
- */
- public var projectRootDir: String = ""
-
- /**
- * A map of package name to html or markdown files used to describe the package. If none is
- * specified we will look for a package.html or package.md file in the source tree
- */
- public var packageDescriptionFiles: Map = HashMap()
-
- /**
- * A map of package name to summary text used in the package overviews
- */
- public var packageSummaryText: Map = HashMap()
+ public var destinationDir: File? = null;
+ {
+ // by default, output dir is not defined in options
+ kdocArgs.docConfig.docOutputDir = ""
+ }
TaskAction fun generateDocs() {
val args = KDocArguments()
val cfg = args.docConfig
- cfg.docOutputDir = destinationDir
- cfg.title = title
- cfg.sourceRootHref = sourceRootHref
- cfg.projectRootDir = projectRootDir
- cfg.warnNoComments = warnNoComments
+ val kdocOptions = kdocArgs.docConfig
+
+ cfg.docOutputDir = if ((kdocOptions.docOutputDir.length == 0) && (destinationDir != null)) { destinationDir!!.path } else { kdocOptions.docOutputDir }
+ cfg.title = kdocOptions.title
+ cfg.sourceRootHref = kdocOptions.sourceRootHref
+ cfg.projectRootDir = kdocOptions.projectRootDir
+ cfg.warnNoComments = kdocOptions.warnNoComments
+
+ cfg.packagePrefixToUrls.putAll(kdocOptions.packagePrefixToUrls)
+ cfg.ignorePackages.addAll(kdocOptions.ignorePackages)
+ cfg.packageDescriptionFiles.putAll(kdocOptions.packageDescriptionFiles)
+ cfg.packageSummaryText.putAll(kdocOptions.packageSummaryText)
+
+ // KDoc compiler does not accept list of files as input. Try to pass directories instead.
+ args.src = getSource().map { it.getParentFile()!!.getAbsolutePath() }.toSet().makeString(File.pathSeparator)
+ // Drop compiled sources to temp. Why KDoc compiles anything after all?!
+ args.outputDir = getTemporaryDir()?.getAbsolutePath()
+
+ logger.warn(args.src)
+ val embeddedAnnotations = getAnnotations(getProject(), logger)
+ val userAnnotations = (kdocArgs.annotations ?: "").split(File.pathSeparatorChar).toList()
+ val allAnnotations = if (kdocArgs.noJdkAnnotations) userAnnotations else userAnnotations.plus(embeddedAnnotations.map {it.getPath()})
+ args.annotations = allAnnotations.makeString(File.pathSeparator)
+
+ args.noStdlib = true
+ args.noJdkAnnotations = true
- cfg.packagePrefixToUrls.putAll(packagePrefixToUrls)
- cfg.ignorePackages.addAll(ignorePackages)
- cfg.packageDescriptionFiles.putAll(packageDescriptionFiles)
- cfg.packageSummaryText.putAll(packageSummaryText)
val compiler = KDocCompiler()
@@ -227,6 +192,17 @@ public open class KDoc(): SourceTask() {
}
}
+fun getAnnotations(project: Project, logger: Logger): Collection {
+ val annotations = project.getExtensions().getByName(DEFAULT_ANNOTATIONS) as Collection
+
+ if (!annotations.isEmpty()) {
+ logger.info("using default annontations from [${annotations.map {it.getPath()}}]")
+ return annotations
+ } else {
+ throw GradleException("Default annotations not found in Kotlin gradle plugin classpath")
+ }
+}
+
class GradleMessageCollector(val logger : Logger): MessageCollector {
public override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) {
val path = location.getPath()
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
index 4cafb0b6e02..6ff2cb9b1e8 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
@@ -11,148 +11,43 @@ import org.junit.Test
import kotlin.test.assertTrue
import kotlin.test.assertEquals
import kotlin.test.fail
+import org.junit.Ignore
+import org.jetbrains.kotlin.gradle.BaseGradleIT.Project
-class BasicKotlinGradleIT {
-
- var workingDir: File = File(".")
-
- Before fun setUp() {
- workingDir = Files.createTempDir()
- workingDir.mkdirs()
- copyRecursively(File("src/test/resources/testProject/alfa"), workingDir)
- copyRecursively(File("src/test/resources/testProject/beta"), workingDir)
- }
-
-
- After fun tearDown() {
- deleteRecursively(workingDir)
- }
+class BasicKotlinGradleIT : BaseGradleIT() {
Test fun testSimpleCompile() {
- val projectDir = File(workingDir, "alfa")
+ val project = Project("alfa")
- val pathToKotlinPlugin = "-PpathToKotlinPlugin=${File("local-repo").getAbsolutePath()}"
- val version = "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT"
- val cmd = if (SystemInfo.isWindows)
- listOf("cmd", "/C", "gradlew.bat", "compileDeployKotlin", "build", pathToKotlinPlugin, version, "--no-daemon", "--debug")
- else
- listOf("/bin/bash", "./gradlew", "compileDeployKotlin", "build", pathToKotlinPlugin, version, "--no-daemon", "--debug")
-
- val builder = ProcessBuilder(cmd)
- builder.directory(projectDir)
- builder.redirectErrorStream(true)
- val process = builder.start()
-
- val s = Scanner(process.getInputStream()!!)
- val text = StringBuilder()
- while (s.hasNextLine()) {
- text append s.nextLine()
- text append "\n"
+ project.build("compileDeployKotlin", "build", "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT") {
+ assertSuccessful()
+ assertReportExists("build/reports/tests/demo.TestSource.html")
+ assertContains(":compileKotlin", ":compileTestKotlin", ":compileDeployKotlin")
}
- s.close()
- val result = process.waitFor()
- val buildOutput = text.toString()
-
- println(buildOutput)
-
- assertEquals(result, 0)
- assertTrue(buildOutput.contains(":compileKotlin"), "Should contain ':compileKotlin'")
- assertTrue(buildOutput.contains(":compileTestKotlin"), "Should contain ':compileTestKotlin'")
- assertTrue(buildOutput.contains(":compileDeployKotlin"), "Should contain ':compileDeployKotlin'")
- assertTrue(File(projectDir, "build/reports/tests/demo.TestSource.html").exists(), "Test report does not exist. Were tests executed?")
-
- // Run the build second time, assert everything is up-to-date
-
- val up2dateBuilder = ProcessBuilder(cmd)
- up2dateBuilder.directory(projectDir)
- up2dateBuilder.redirectErrorStream(true)
- val up2dateProcess = up2dateBuilder.start()
-
- val up2dateProcessScanner = Scanner(up2dateProcess.getInputStream()!!)
- val up2dateText = StringBuilder()
- while (up2dateProcessScanner.hasNextLine()) {
- up2dateText append up2dateProcessScanner.nextLine()
- up2dateText append "\n"
+ project.build("compileDeployKotlin", "build", "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT") {
+ assertSuccessful()
+ assertContains(":compileKotlin UP-TO-DATE", ":compileTestKotlin UP-TO-DATE", ":compileDeployKotlin UP-TO-DATE", ":compileJava UP-TO-DATE")
}
- up2dateProcessScanner.close()
-
- val up2dateResult = up2dateProcess.waitFor()
- val up2dateBuildOutput = up2dateText.toString()
-
- println(up2dateBuildOutput)
-
- assertEquals(up2dateResult, 0)
- assertTrue(up2dateBuildOutput.contains(":compileKotlin UP-TO-DATE"), "Should contain ':compileKotlin UP-TO-DATE'")
- assertTrue(up2dateBuildOutput.contains(":compileTestKotlin UP-TO-DATE"), "Should contain ':compileTestKotlin UP-TO-DATE'")
- assertTrue(up2dateBuildOutput.contains(":compileDeployKotlin UP-TO-DATE"), "Should contain ':compileDeployKotlin UP-TO-DATE'")
- assertTrue(up2dateBuildOutput.contains(":compileJava UP-TO-DATE"), "Should contain ':compileJava UP-TO-DATE'")
}
Test fun testKotlinCustomDirectory() {
- val projectDir = File(workingDir, "beta")
-
- val pathToKotlinPlugin = "-PpathToKotlinPlugin=${File("local-repo").getAbsolutePath()}"
- val version = "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT"
- val cmd = if (SystemInfo.isWindows)
- listOf("cmd", "/C", "gradlew.bat", "build", pathToKotlinPlugin, version, "--no-daemon", "--debug")
- else
- listOf("/bin/bash", "./gradlew", "build", pathToKotlinPlugin, version, "--no-daemon", "--debug")
-
- val builder = ProcessBuilder(cmd)
- builder.directory(projectDir)
- builder.redirectErrorStream(true)
- val process = builder.start()
-
- val s = Scanner(process.getInputStream()!!)
- val text = StringBuilder()
- while (s.hasNextLine()) {
- text append s.nextLine()
- text append "\n"
- }
- s.close()
-
- val result = process.waitFor()
- val buildOutput = text.toString()
-
- println(buildOutput)
-
- assertEquals(result, 0)
- }
-
-
- fun copyRecursively(source: File, target: File) {
- assertTrue(target.isDirectory())
- val targetFile = File(target, source.getName())
- if (source.isDirectory()) {
- targetFile.mkdir()
- val array = source.listFiles()
- if (array != null) {
- for (child in array) {
- copyRecursively(child, targetFile)
- }
- }
- } else {
- Files.copy(source, targetFile)
+ Project("beta").build("build", "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT") {
+ assertSuccessful()
}
}
-
- fun deleteRecursively(f: File): Unit {
- if (f.isDirectory()) {
- val children = f.listFiles()
- if (children != null) {
- for (child in children) {
- deleteRecursively(child)
- }
- }
- val shouldBeEmpty = f.listFiles()
- if (shouldBeEmpty != null) {
- assertTrue(shouldBeEmpty.isEmpty())
- } else {
- fail("Error listing directory content")
- }
+ Test fun testSimpleKDoc() {
+ Project("delta").build("kdoc", "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT") {
+ assertSuccessful()
+ assertReportExists("build/docs/kdoc/demo/MyClass.html")
+ assertContains(":kdoc", "Generating kdoc to")
+ }
+ }
+
+ Ignore fun testKotlinExtraJavaSrc() {
+ Project("gamma").build("build", "-Pkotlin.gradle.plugin.version=0.1-SNAPSHOT") {
+ assertSuccessful()
}
- f.delete()
}
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.jar
rename to libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.jar
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.properties
rename to libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.properties
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradlew b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradlew
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradlew
rename to libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradlew
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradlew.bat b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradlew.bat
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/gradlew.bat
rename to libraries/tools/kotlin-gradle-plugin-core/src/test/resources/GradleWrapper-1.4/gradlew.bat
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/externalAnnotations/com/google/common/base/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/externalAnnotations/com/google/common/base/annotations.xml
index be8ddab04a3..fd541a7e6e5 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/externalAnnotations/com/google/common/base/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/alfa/externalAnnotations/com/google/common/base/annotations.xml
@@ -1,18 +1,11 @@
-
-
-
-
+
-
-
-
-
+
-
-
-
-
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/externalAnnotations/com/google/common/base/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/externalAnnotations/com/google/common/base/annotations.xml
index be8ddab04a3..fd541a7e6e5 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/externalAnnotations/com/google/common/base/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/externalAnnotations/com/google/common/base/annotations.xml
@@ -1,18 +1,11 @@
-
-
-
-
+
-
-
-
-
+
-
-
-
-
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/build.gradle b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/build.gradle
new file mode 100644
index 00000000000..2a7ce36d671
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/build.gradle
@@ -0,0 +1,40 @@
+buildscript {
+ repositories {
+ mavenCentral()
+ maven {
+ url 'file://' + pathToKotlinPlugin
+ }
+ }
+ dependencies {
+ classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin-core:0.1-SNAPSHOT'
+ }
+}
+
+import org.jetbrains.kotlin.gradle.plugin.KotlinPlugin
+
+apply plugin: KotlinPlugin
+
+repositories {
+ maven {
+ url 'file://' + pathToKotlinPlugin
+ }
+ mavenCentral()
+}
+
+dependencies {
+ testCompile 'org.testng:testng:6.8'
+ testRuntime 'org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT'
+}
+
+test {
+ useTestNG()
+}
+
+compileKotlin {
+ kotlinOptions.annotations = "externalAnnotations"
+}
+
+
+task wrapper(type: Wrapper) {
+ gradleVersion="1.4"
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/externalAnnotations/com/google/common/base/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/externalAnnotations/com/google/common/base/annotations.xml
new file mode 100644
index 00000000000..fd541a7e6e5
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/externalAnnotations/com/google/common/base/annotations.xml
@@ -0,0 +1,11 @@
+
+ -
+
+
+ -
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/src/main/kotlin/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/src/main/kotlin/helloWorld.kt
new file mode 100644
index 00000000000..a844b9fe15d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/delta/src/main/kotlin/helloWorld.kt
@@ -0,0 +1,15 @@
+package demo
+
+/**
+ * This is **bold**
+ *
+ * New paragraph using newlines.
+ *
+ * We can also support wiki links notation
+ * for example [[List]] and [[Collection]] and [[java.util.Collection.size()]] will
+ * generate hypertext links to classes
+ */
+public class MyClass() {
+ val i: Int = 0
+}
+
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/build.gradle b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/build.gradle
new file mode 100644
index 00000000000..6cabbaf0bac
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/build.gradle
@@ -0,0 +1,55 @@
+buildscript {
+ repositories {
+ mavenCentral()
+ maven {
+ url 'file://' + pathToKotlinPlugin
+ }
+ }
+ dependencies {
+ classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin-core:0.1-SNAPSHOT'
+ }
+}
+
+import org.jetbrains.kotlin.gradle.plugin.KotlinPlugin
+
+apply plugin: KotlinPlugin
+apply plugin: 'java'
+
+repositories {
+ maven {
+ url 'file://' + pathToKotlinPlugin
+ }
+ mavenCentral()
+}
+
+sourceSets {
+ main {
+ java {
+ srcDir 'generated/'
+ }
+ }
+}
+
+dependencies {
+ compile 'com.google.guava:guava:12.0'
+ testCompile 'org.testng:testng:6.8'
+ testRuntime 'org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT'
+}
+
+test {
+ useTestNG()
+}
+
+task show << {
+ buildscript.configurations.classpath.each { println it }
+}
+
+
+compileKotlin {
+ kotlinOptions.annotations = "externalAnnotations"
+}
+
+
+task wrapper(type: Wrapper) {
+ gradleVersion="1.4"
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/externalAnnotations/com/google/common/base/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/externalAnnotations/com/google/common/base/annotations.xml
new file mode 100644
index 00000000000..fd541a7e6e5
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/externalAnnotations/com/google/common/base/annotations.xml
@@ -0,0 +1,11 @@
+
+ -
+
+
+ -
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/generated/demo/Greeter.java b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/generated/demo/Greeter.java
new file mode 100644
index 00000000000..ec2831d8d21
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/generated/demo/Greeter.java
@@ -0,0 +1,17 @@
+package demo;
+
+/**
+ * Created by Nikita.Skvortsov
+ * Date: 3/1/13, 10:53 AM
+ */
+public class Greeter {
+ private final String myGreeting;
+
+ public Greeter(String greeting) {
+ myGreeting = greeting;
+ }
+
+ public String getGreeting() {
+ return myGreeting;
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/src/main/java/demo/HelloWorld.java b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/src/main/java/demo/HelloWorld.java
new file mode 100644
index 00000000000..37e71dc46aa
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/src/main/java/demo/HelloWorld.java
@@ -0,0 +1,20 @@
+package demo;
+
+import demo.*;
+
+/**
+ * Created by Nikita.Skvortsov
+ * Date: 3/1/13, 10:50 AM
+ */
+public class HelloWorld {
+ public static void main(String[] args) {
+ final KotlinGreetingJoiner example = new KotlinGreetingJoiner(new demo.Greeter("Hi"));
+
+ example.addName("Harry");
+ example.addName("Ron");
+ example.addName(null);
+ example.addName("Hermione");
+
+ System.out.println(example.getJoinedGreeting());
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/src/main/kotlin/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/src/main/kotlin/helloWorld.kt
new file mode 100644
index 00000000000..b3e99bbdd59
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/gamma/src/main/kotlin/helloWorld.kt
@@ -0,0 +1,20 @@
+package demo
+
+import com.google.common.primitives.Ints
+import com.google.common.base.Joiner
+import java.util.ArrayList
+
+class KotlinGreetingJoiner(val greeter : Greeter) {
+
+ val names = ArrayList()
+
+ fun addName(name : String?): Unit{
+ names.add(name)
+ }
+
+ fun getJoinedGreeting() : String? {
+ val joiner = Joiner.on(" and ").skipNulls();
+ return "${greeter.getGreeting()} ${joiner.join(names)}"
+ }
+}
+
diff --git a/libraries/tools/kotlin-gradle-plugin-test/annotations/com/google/common/io/annotations.xml b/libraries/tools/kotlin-gradle-plugin-test/annotations/com/google/common/io/annotations.xml
new file mode 100644
index 00000000000..64ac65dcca1
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-test/annotations/com/google/common/io/annotations.xml
@@ -0,0 +1,5 @@
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-test/pom.xml b/libraries/tools/kotlin-gradle-plugin-test/pom.xml
new file mode 100644
index 00000000000..c8d89c918e3
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-test/pom.xml
@@ -0,0 +1,84 @@
+
+
+
+
+ 4.0.0
+
+ 3.0.4
+
+
+
+ org.jetbrains.kotlin
+ kotlin-project
+ 0.1-SNAPSHOT
+ ../../pom.xml
+
+
+ kotlin-gradle-plugin-test
+ jar
+
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${project.version}
+
+
+ junit
+ junit
+ 4.11
+
+
+ com.google.guava
+ guava
+ 16.0.1
+
+
+
+
+
+ ${project.basedir}/src/main/kotlin
+
+
+
+ ${project.basedir}/src/main/resources
+ true
+
+
+
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+ ${project.version}
+
+
+ ${basedir}/annotations
+
+
+
+
+
+ compile
+ compile
+ compile
+
+
+
+ test-compile
+ test-compile
+ test-compile
+
+
+
+
+
+
+
+ jetbrains-utils
+ http://repository.jetbrains.com/utils
+
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin-test/src/main/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-test/src/main/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt
new file mode 100644
index 00000000000..8733e8bc320
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-test/src/main/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt
@@ -0,0 +1,119 @@
+package org.jetbrains.kotlin.gradle
+
+import com.google.common.io.Files
+import java.io.File
+import java.util.Scanner
+import org.junit.Before
+import org.junit.After
+import kotlin.test.assertTrue
+import kotlin.test.assertEquals
+import kotlin.test.fail
+
+open class BaseGradleIT {
+
+ var workingDir: File = File(".")
+
+ Before fun setUp() {
+ workingDir = Files.createTempDir()
+ }
+
+ After fun tearDown() {
+ deleteRecursively(workingDir)
+ }
+
+ class Project(val projectName: String, val wrapperVersion: String = "1.4")
+
+ class CompiledProject(val project: Project, val output: String, val resultCode: Int)
+
+ fun Project.build(vararg tasks: String, check: CompiledProject.() -> Unit) {
+ copyRecursively(File("src/test/resources/testProject/$projectName"), workingDir)
+ val projectDir = File(workingDir, projectName)
+ copyDirRecursively(File("src/test/resources/GradleWrapper-$wrapperVersion"), projectDir)
+ val cmd = createCommand(tasks)
+ val process = createProcess(cmd, projectDir)
+
+ val (output, resultCode) = readOutput(process)
+ CompiledProject(this, output, resultCode).check()
+ }
+
+ fun CompiledProject.assertSuccessful(): CompiledProject {
+ assertEquals(resultCode, 0, "Gradle build failed")
+ return this
+ }
+
+ fun CompiledProject.assertContains(vararg expected: String): CompiledProject {
+ for (str in expected) {
+ assertTrue(output.contains(str), "Should contain '$str', actual output: $output")
+ }
+ return this
+ }
+
+ fun CompiledProject.assertReportExists(pathToReport: String = ""): CompiledProject {
+ assertTrue(File(File(workingDir, project.projectName), pathToReport).exists(), "The report [$pathToReport] does not exist.")
+ return this
+ }
+
+ private fun createCommand(params: Array): List {
+ val pathToKotlinPlugin = "-PpathToKotlinPlugin=" + File("local-repo").getAbsolutePath()
+ val tailParameters = params + listOf(pathToKotlinPlugin, "--no-daemon", "--debug")
+
+ return if (isWindows())
+ listOf("cmd", "/C", "gradlew.bat") + tailParameters
+ else
+ listOf("/bin/bash", "./gradlew") + tailParameters
+ }
+
+ private fun isWindows(): Boolean {
+ return System.getProperty("os.name")!!.contains("Windows")
+ }
+
+ private fun createProcess(cmd: List, projectDir: File): Process {
+ val builder = ProcessBuilder(cmd)
+ builder.directory(projectDir)
+ builder.redirectErrorStream(true)
+ return builder.start()
+ }
+
+ private fun readOutput(process: Process): Pair {
+ val s = Scanner(process.getInputStream()!!)
+ val text = StringBuilder()
+ while (s.hasNextLine()) {
+ text append s.nextLine()
+ text append "\n"
+ }
+ s.close()
+
+ val result = process.waitFor()
+ return text.toString() to result
+ }
+
+ fun copyRecursively(source: File, target: File) {
+ assertTrue(target.isDirectory())
+ val targetFile = File(target, source.getName())
+ if (source.isDirectory()) {
+ targetFile.mkdir()
+ source.listFiles()?.forEach { copyRecursively(it, targetFile) }
+ } else {
+ Files.copy(source, targetFile)
+ }
+ }
+
+ fun copyDirRecursively(source: File, target: File) {
+ assertTrue(source.isDirectory())
+ assertTrue(target.isDirectory())
+ source.listFiles()?.forEach { copyRecursively(it, target) }
+ }
+
+ fun deleteRecursively(f: File): Unit {
+ if (f.isDirectory()) {
+ f.listFiles()?.forEach { deleteRecursively(it) }
+ val fileList = f.listFiles()
+ if (fileList != null) {
+ assertTrue(fileList.isEmpty())
+ } else {
+ fail("Error listing directory content")
+ }
+ }
+ f.delete()
+ }
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/com/android/build/gradle/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/com/android/build/gradle/annotations.xml
new file mode 100644
index 00000000000..a86a23af2a8
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/com/android/build/gradle/annotations.xml
@@ -0,0 +1,5 @@
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/com/android/build/gradle/api/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/com/android/build/gradle/api/annotations.xml
new file mode 100644
index 00000000000..500ef07cd98
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/com/android/build/gradle/api/annotations.xml
@@ -0,0 +1,31 @@
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
diff --git a/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/apache/commons/io/annotations.xml b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/apache/commons/io/annotations.xml
new file mode 100644
index 00000000000..0aee42a6e6a
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/kotlinAnnotation/org/apache/commons/io/annotations.xml
@@ -0,0 +1,5 @@
+
+ -
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/pom.xml b/libraries/tools/kotlin-gradle-plugin/pom.xml
index 4ce72f19ffc..5156587b931 100644
--- a/libraries/tools/kotlin-gradle-plugin/pom.xml
+++ b/libraries/tools/kotlin-gradle-plugin/pom.xml
@@ -37,6 +37,12 @@
${project.version}
provided
+
+ org.jetbrains.kotlin
+ kotlin-gradle-plugin-test
+ ${project.version}
+ test
+
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt
index e96b14e1dab..ac4b4db2767 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidGradleIT.kt
@@ -1,174 +1,55 @@
package org.jetbrains.kotlin.gradle
-import com.google.common.io.Files
-import com.intellij.openapi.util.SystemInfo
-import java.io.File
-import java.util.Arrays
-import java.util.Scanner
-import org.junit.Before
-import org.junit.After
import org.junit.Test
import org.junit.Ignore
-import kotlin.test.assertTrue
-import kotlin.test.assertEquals
-import kotlin.test.fail
-import org.gradle.testfixtures.ProjectBuilder
+import org.jetbrains.kotlin.gradle.BaseGradleIT.Project
Ignore("Requires Android SDK")
-class KotlinAndroidGradleIT {
-
- var workingDir: File = File(".")
-
- Before fun setUp() {
- workingDir = Files.createTempDir()
- workingDir.mkdirs()
- copyRecursively(File("src/test/resources/testProject/AndroidAlfaProject"), workingDir)
- }
-
-
- After fun tearDown() {
- deleteRecursively(workingDir)
- }
+class KotlinAndroidGradleIT: BaseGradleIT() {
Test fun testSimpleCompile() {
- val projectDir = File(workingDir, "AndroidAlfaProject")
+ val project = Project("AndroidAlfaProject", "1.6")
- val pathToKotlinPlugin = "-PpathToKotlinPlugin=" + File("local-repo").getAbsolutePath()
- val cmd = if (SystemInfo.isWindows)
- listOf("cmd", "/C", "gradlew.bat", "build", pathToKotlinPlugin, "--no-daemon", "--debug")
- else
- listOf("/bin/bash", "./gradlew", "build", pathToKotlinPlugin, "--no-daemon", "--debug")
-
- val builder = ProcessBuilder(cmd)
- builder.directory(projectDir)
- builder.redirectErrorStream(true)
- val process = builder.start()
-
- val s = Scanner(process.getInputStream()!!)
- val text = StringBuilder()
- while (s.hasNextLine()) {
- text append s.nextLine()
- text append "\n"
+ project.build("build") {
+ assertSuccessful()
+ assertContains(":LibAlfa:compileReleaseKotlin",
+ ":compileFlavor1DebugKotlin",
+ ":compileFlavor2DebugKotlin",
+ ":compileFlavor1JnidebugKotlin",
+ ":compileFlavor1ReleaseKotlin",
+ ":compileFlavor2JnidebugKotlin",
+ ":compileFlavor2ReleaseKotlin",
+ ":compileFlavor1Debug",
+ ":compileFlavor2Debug",
+ ":compileFlavor1Jnidebug",
+ ":compileFlavor2Jnidebug",
+ ":compileFlavor1Release",
+ ":compileFlavor2Release")
}
- s.close()
-
- val result = process.waitFor()
- val buildOutput = text.toString()
-
- println(buildOutput)
-
- assertEquals(result, 0)
-
- assertTrue(buildOutput.contains(":LibAlfa:compileReleaseKotlin"), "Should contain ':LibAlfa:compileReleaseKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor1DebugKotlin"), "Should contain ':compileFlavor1DebugKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor2DebugKotlin"), "Should contain ':compileFlavor2DebugKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor1JnidebugKotlin"), "Should contain ':compileFlavor1JnidebugKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor1ReleaseKotlin"), "Should contain ':compileFlavor1ReleaseKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor2JnidebugKotlin"), "Should contain ':compileFlavor2JnidebugKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor2ReleaseKotlin"), "Should contain ':compileFlavor2ReleaseKotlin'")
- assertTrue(buildOutput.contains(":compileFlavor1Debug"), "Should contain ':compileFlavor1Debug'")
- assertTrue(buildOutput.contains(":compileFlavor2Debug"), "Should contain ':compileFlavor2Debug'")
- assertTrue(buildOutput.contains(":compileFlavor1Jnidebug"), "Should contain ':compileFlavor1Jnidebug'")
- assertTrue(buildOutput.contains(":compileFlavor2Jnidebug"), "Should contain ':compileFlavor2Jnidebug'")
- assertTrue(buildOutput.contains(":compileFlavor1Release"), "Should contain ':compileFlavor1Release'")
- assertTrue(buildOutput.contains(":compileFlavor2Release"), "Should contain ':compileFlavor2Release'")
// Run the build second time, assert everything is up-to-date
-
- val up2dateBuilder = ProcessBuilder(cmd)
- up2dateBuilder.directory(projectDir)
- up2dateBuilder.redirectErrorStream(true)
- val up2dateProcess = up2dateBuilder.start()
-
- val up2dateProcessScanner = Scanner(up2dateProcess.getInputStream()!!)
- val up2dateText = StringBuilder()
- while (up2dateProcessScanner.hasNextLine()) {
- up2dateText append up2dateProcessScanner.nextLine()
- up2dateText append "\n"
+ project.build("build") {
+ assertSuccessful()
+ assertContains(":LibAlfa:compileReleaseKotlin UP-TO-DATE", ":LibAlfa:compileRelease UP-TO-DATE")
}
- up2dateProcessScanner.close()
-
- val up2dateResult = up2dateProcess.waitFor()
- val up2dateBuildOutput = up2dateText.toString()
-
- println(up2dateBuildOutput)
-
- assertEquals(up2dateResult, 0)
- assertTrue(up2dateBuildOutput.contains(":LibAlfa:compileReleaseKotlin UP-TO-DATE"), "Should contain ':LibAlfa:compileReleaseKotlin UP-TO-DATE'")
- assertTrue(up2dateBuildOutput.contains(":LibAlfa:compileRelease UP-TO-DATE"), "Should contain ':LibAlfa:compileReleas UP-TO-DATE'")
-
// Run the build third time, re-run tasks
- val rebuilder = ProcessBuilder(cmd + "--rerun-tasks")
- rebuilder.directory(projectDir)
- rebuilder.redirectErrorStream(true)
- val reprocess = rebuilder.start()
-
- val rescanner = Scanner(reprocess.getInputStream()!!)
- val retext = StringBuilder()
- while (rescanner.hasNextLine()) {
- retext append rescanner.nextLine()
- retext append "\n"
+ project.build("build", "--rerun-tasks") {
+ assertSuccessful()
+ assertContains(":LibAlfa:compileReleaseKotlin",
+ ":compileFlavor1DebugKotlin",
+ ":compileFlavor2DebugKotlin",
+ ":compileFlavor1JnidebugKotlin",
+ ":compileFlavor1ReleaseKotlin",
+ ":compileFlavor2JnidebugKotlin",
+ ":compileFlavor2ReleaseKotlin",
+ ":compileFlavor1Debug",
+ ":compileFlavor2Debug",
+ ":compileFlavor1Jnidebug",
+ ":compileFlavor2Jnidebug",
+ ":compileFlavor1Release",
+ ":compileFlavor2Release")
}
- rescanner.close()
-
- val reresult = reprocess.waitFor()
- val rebuildOutput = retext.toString()
-
- println(rebuildOutput)
-
- assertEquals(reresult, 0)
- assertTrue(buildOutput.contains(":LibAlfa:compileReleaseKotlin"), "Should contain ':LibAlfa:compileReleaseKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor1DebugKotlin"), "Should contain ':compileFlavor1DebugKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor2DebugKotlin"), "Should contain ':compileFlavor2DebugKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor1JnidebugKotlin"), "Should contain ':compileFlavor1JnidebugKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor1ReleaseKotlin"), "Should contain ':compileFlavor1ReleaseKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor2JnidebugKotlin"), "Should contain ':compileFlavor2JnidebugKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor2ReleaseKotlin"), "Should contain ':compileFlavor2ReleaseKotlin'")
- assertTrue(rebuildOutput.contains(":compileFlavor1Debug"), "Should contain ':compileFlavor1Debug'")
- assertTrue(rebuildOutput.contains(":compileFlavor2Debug"), "Should contain ':compileFlavor2Debug'")
- assertTrue(rebuildOutput.contains(":compileFlavor1Jnidebug"), "Should contain ':compileFlavor1Jnidebug'")
- assertTrue(rebuildOutput.contains(":compileFlavor2Jnidebug"), "Should contain ':compileFlavor2Jnidebug'")
- assertTrue(rebuildOutput.contains(":compileFlavor1Release"), "Should contain ':compileFlavor1Release'")
- assertTrue(rebuildOutput.contains(":compileFlavor2Release"), "Should contain ':compileFlavor2Release'")
-
-
- }
-
-
- fun copyRecursively(source: File, target: File) {
- assertTrue(target.isDirectory())
- val targetFile = File(target, source.getName())
- if (source.isDirectory()) {
- targetFile.mkdir()
- val array = source.listFiles()
- if (array != null) {
- for (child in array) {
- copyRecursively(child, targetFile)
- }
- }
- } else {
- Files.copy(source, targetFile)
- }
- }
-
-
- fun deleteRecursively(f: File): Unit {
- if (f.isDirectory()) {
- val children = f.listFiles()
- if (children != null) {
- for (child in children) {
- deleteRecursively(child)
- }
- }
- val shouldBeEmpty = f.listFiles()
- if (shouldBeEmpty != null) {
- assertTrue(shouldBeEmpty.isEmpty())
- } else {
- fail("Error listing directory content")
- }
- }
- f.delete()
}
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
index 023e924dd41..4e7229e81a4 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt
@@ -11,19 +11,9 @@ import org.junit.Test
import kotlin.test.assertTrue
import kotlin.test.assertEquals
import kotlin.test.fail
+import org.jetbrains.kotlin.gradle.BaseGradleIT.Project
-class BasicKotlinGradleIT {
-
- var workingDir: File = File(".")
-
- Before fun setUp() {
- workingDir = Files.createTempDir()
- workingDir.mkdirs()
- }
-
- After fun tearDown() {
- deleteRecursively(workingDir)
- }
+class BasicKotlinGradleIT: BaseGradleIT() {
Test fun testCrossCompile() {
val project = Project("alfa")
@@ -62,98 +52,4 @@ class BasicKotlinGradleIT {
assertContains(":compileKotlin", ":compileTestKotlin")
}
}
-
- class Project(val projectName: String)
-
- class CompiledProject(val project: Project, val output: String, val resultCode: Int)
-
- fun Project.build(command: String, check: CompiledProject.() -> Unit) {
- copyRecursively(File("src/test/resources/testProject/$projectName"), workingDir)
- val projectDir = File(workingDir, projectName)
- val cmd = createCommand(command)
- val process = createProcess(cmd, projectDir)
-
- val (output, resultCode) = readOutput(process)
- CompiledProject(this, output, resultCode).check()
- }
-
- private fun CompiledProject.assertSuccessful(): CompiledProject {
- assertEquals(resultCode, 0)
- return this
- }
-
- private fun CompiledProject.assertContains(vararg expected: String): CompiledProject {
- for (str in expected) {
- assertTrue(output.contains(str), "Should contain '$str', actual output: $output")
- }
- return this
- }
-
- private fun CompiledProject.assertReportExists(): CompiledProject {
- assertTrue(File(File(workingDir, project.projectName), "build/reports/tests/demo.TestSource.html").exists(), "Test report does not exist. Were tests executed?")
- return this
- }
-
- private fun createCommand(name: String): List {
- val pathToKotlinPlugin = "-PpathToKotlinPlugin=" + File("local-repo").getAbsolutePath()
-
- return if (SystemInfo.isWindows)
- listOf("cmd", "/C", "gradlew.bat", name, "build", pathToKotlinPlugin, "--no-daemon", "--debug")
- else
- listOf("/bin/bash", "./gradlew", name, "build", pathToKotlinPlugin, "--no-daemon", "--debug")
- }
-
- private fun createProcess(cmd: List, projectDir: File): Process {
- val builder = ProcessBuilder(cmd)
- builder.directory(projectDir)
- builder.redirectErrorStream(true)
- return builder.start()
- }
-
- private fun readOutput(process: Process): Pair {
- val s = Scanner(process.getInputStream()!!)
- val text = StringBuilder()
- while (s.hasNextLine()) {
- text append s.nextLine()
- text append "\n"
- }
- s.close()
-
- val result = process.waitFor()
- return text.toString() to result
- }
-
- fun copyRecursively(source: File, target: File) {
- assertTrue(target.isDirectory())
- val targetFile = File(target, source.getName())
- if (source.isDirectory()) {
- targetFile.mkdir()
- val array = source.listFiles()
- if (array != null) {
- for (child in array) {
- copyRecursively(child, targetFile)
- }
- }
- } else {
- Files.copy(source, targetFile)
- }
- }
-
- fun deleteRecursively(f: File): Unit {
- if (f.isDirectory()) {
- val children = f.listFiles()
- if (children != null) {
- for (child in children) {
- deleteRecursively(child)
- }
- }
- val shouldBeEmpty = f.listFiles()
- if (shouldBeEmpty != null) {
- assertTrue(shouldBeEmpty.isEmpty())
- } else {
- fail("Error listing directory content")
- }
- }
- f.delete()
- }
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.jar
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.jar
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.properties
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradle/wrapper/gradle-wrapper.properties
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradlew b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradlew
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradlew
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradlew
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradlew.bat b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradlew.bat
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin-core/src/test/resources/testProject/beta/gradlew.bat
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.4/gradlew.bat
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradle/wrapper/gradle-wrapper.jar
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradle/wrapper/gradle-wrapper.jar
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradle/wrapper/gradle-wrapper.properties
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradle/wrapper/gradle-wrapper.properties
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradlew b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradlew
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradlew
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradlew
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradlew.bat b/libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradlew.bat
similarity index 100%
rename from libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidAlfaProject/gradlew.bat
rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/GradleWrapper-1.6/gradlew.bat
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 42d9b0e9c58..00000000000
Binary files a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 90e63547fc6..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Thu Feb 28 14:00:49 MSK 2013
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.4-bin.zip
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradlew b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradlew
deleted file mode 100644
index 91a7e269e19..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradlew.bat b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradlew.bat
deleted file mode 100644
index 8a0b282aa68..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/alfa/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 42d9b0e9c58..00000000000
Binary files a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 90e63547fc6..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Thu Feb 28 14:00:49 MSK 2013
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.4-bin.zip
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradlew b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradlew
deleted file mode 100644
index 91a7e269e19..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradlew.bat b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradlew.bat
deleted file mode 100644
index 8a0b282aa68..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/beta/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradle/wrapper/gradle-wrapper.jar b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 42d9b0e9c58..00000000000
Binary files a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradle/wrapper/gradle-wrapper.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 90e63547fc6..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Thu Feb 28 14:00:49 MSK 2013
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.4-bin.zip
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradlew b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradlew
deleted file mode 100644
index 91a7e269e19..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradlew.bat b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradlew.bat
deleted file mode 100644
index 8a0b282aa68..00000000000
--- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/classpathTest/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega