diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExec.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExec.groovy index c90c0b1..8b64253 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExec.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExec.groovy @@ -58,7 +58,7 @@ class RetrolambdaExec { if (!retrolambda.onJava8) { def java = "${retrolambda.tryGetJdk()}/bin/java" if (!checkIfExecutableExists(java)) { - throw new ProjectConfigurationException("Cannot find executable: $java", null) + throw new ProjectConfigurationException("Cannot find executable: $java", (Throwable) null) } exec.executable java } diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy index 25f200c..0dc36a8 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy @@ -101,7 +101,7 @@ public class RetrolambdaExtension { String tryGetJdk() { String jdk = getJdk() if (jdk == null) { - throw new ProjectConfigurationException("When running gradle with java 5, 6 or 7, you must set the path to jdk8, either with property retrolambda.jdk or environment variable JAVA8_HOME", null) + throw new ProjectConfigurationException("When running gradle with java 5, 6 or 7, you must set the path to jdk8, either with property retrolambda.jdk or environment variable JAVA8_HOME", (Throwable) null) } return jdk } diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy index 82cc2da..e3e39a6 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy @@ -28,7 +28,7 @@ import org.gradle.api.plugins.JavaPlugin @CompileStatic public class RetrolambdaPlugin implements Plugin { - protected static String retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:2.5.1" + protected static String retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:2.5.6" @Override void apply(Project project) { diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy index 6acbc97..cf13423 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy @@ -143,7 +143,7 @@ class RetrolambdaPluginAndroid implements Plugin { // Set JDK 8 for the compiler task def javac = "${retrolambda.tryGetJdk()}/bin/javac" if (!checkIfExecutableExists(javac)) { - throw new ProjectConfigurationException("Cannot find executable: $javac", null) + throw new ProjectConfigurationException("Cannot find executable: $javac", (Throwable) null) } javaCompile.options.fork = true javaCompile.options.forkOptions.executable = javac @@ -154,7 +154,7 @@ class RetrolambdaPluginAndroid implements Plugin { if (!retrolambda.onJava8) { def java = "${retrolambda.tryGetJdk()}/bin/java" if (!checkIfExecutableExists(java)) { - throw new ProjectConfigurationException("Cannot find executable: $java", null) + throw new ProjectConfigurationException("Cannot find executable: $java", (Throwable) null) } test.executable java } diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginGroovy.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginGroovy.groovy index 501a420..aeea804 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginGroovy.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginGroovy.groovy @@ -34,7 +34,7 @@ public class RetrolambdaPluginGroovy implements Plugin { if (project.retrolambda.isIncluded(set.name)) { def name = RetrolambdaUtil.capitalize(set.name) def taskName = "compileRetrolambdaGroovy$name" - def oldOutputDir = set.output.classesDir + def oldOutputDir = RetrolambdaUtil.groovyOutputDir(set) def newOutputDir = project.file("$project.buildDir/retrolambda/$set.name") /* No compileJavaTaskName present, so re-use any modifications applied to compileJava and remap to Groovy */ diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy index d046615..f489df1 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy @@ -40,7 +40,7 @@ public class RetrolambdaPluginJava implements Plugin { if (retrolambda.isIncluded(set.name)) { def name = RetrolambdaUtil.capitalize(set.name) def taskName = "compileRetrolambda$name" - def oldOutputDir = set.output.classesDir + def oldOutputDir = RetrolambdaUtil.javaOutputDir(set) def newOutputDir = project.file("$project.buildDir/retrolambda/$set.name") def compileJavaTask = project.tasks.getByName(set.compileJavaTaskName) as JavaCompile @@ -82,7 +82,7 @@ public class RetrolambdaPluginJava implements Plugin { if (oldJdkPath != null) { def oldJava = "$oldJdkPath/bin/java" if (!checkIfExecutableExists(oldJava)) { - throw new ProjectConfigurationException("Cannot find executable: $oldJava", null) + throw new ProjectConfigurationException("Cannot find executable: $oldJava", (Throwable) null) } task.executable oldJava } diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTask.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTask.groovy index 5206888..fefc2a6 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTask.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTask.groovy @@ -55,13 +55,13 @@ class RetrolambdaTask extends DefaultTask { def retrolambda = project.extensions.getByType(RetrolambdaExtension) List changes = [] - inputs.outOfDate { changes += it } + inputs.outOfDate { changes.add(it) } // Ensure output is cleared if build is not incremental. if (inputs.incremental && !changes.isEmpty() && !retrolambda.incremental) { outputDir.eachFile { it.delete() } } else { - changes.each { InputFileDetails change -> + for (InputFileDetails change : changes) { if (change.modified) deleteRelated(toOutput(change.file)) } } @@ -90,11 +90,11 @@ class RetrolambdaTask extends DefaultTask { } } - def File toOutput(File file) { + File toOutput(File file) { return outputDir.toPath().resolve(inputDir.toPath().relativize(file.toPath())).toFile() } - def deleteRelated(File file) { + void deleteRelated(File file) { def className = file.name.replaceFirst(/\.class$/, '') // Delete any generated Lambda classes project.logger.debug("Deleting related for " + className + " in " + file.parentFile) diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTransform.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTransform.groovy index 3e7359e..7154973 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTransform.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaTransform.groovy @@ -116,7 +116,7 @@ class RetrolambdaTransform extends Transform { BaseVariant variant = getVariant(context, outputDir) if (variant == null) { - throw new ProjectConfigurationException('Missing variant for output dir: ' + outputDir, null) + throw new ProjectConfigurationException('Missing variant for output dir: ' + outputDir, (Throwable) null) } FileCollection classpathFiles = variant.javaCompile.classpath @@ -132,7 +132,7 @@ class RetrolambdaTransform extends Transform { } else { // If this is null it means the javaCompile task didn't need to run, however, we still // need to run but can't without the bootClasspath. Just fail and ask the user to rebuild. - throw new ProjectConfigurationException("Unable to obtain the bootClasspath. This may happen if your javaCompile tasks didn't run but retrolambda did. You must rebuild your project or otherwise force javaCompile to run.", null) + throw new ProjectConfigurationException("Unable to obtain the bootClasspath. This may happen if your javaCompile tasks didn't run but retrolambda did. You must rebuild your project or otherwise force javaCompile to run.", (Throwable) null) } return classpathFiles @@ -161,7 +161,7 @@ class RetrolambdaTransform extends Transform { // This will no longer be needed when the transform api supports per-variant transforms String[] parts = outputDir.toURI().path.split('/intermediates/transforms/retrolambda/|/folders/[0-9]+') if (parts.length < 2) { - throw new ProjectConfigurationException('Could not extract variant from output dir: ' + outputDir, null) + throw new ProjectConfigurationException('Could not extract variant from output dir: ' + outputDir, (Throwable) null) } String variantPath = parts[1] for (BaseVariant variant : variants) { diff --git a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaUtil.groovy b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaUtil.groovy index 3fe26c6..31da9a8 100644 --- a/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaUtil.groovy +++ b/gradle-retrolambda/src/main/groovy/me/tatarka/RetrolambdaUtil.groovy @@ -1,7 +1,29 @@ package me.tatarka +import groovy.transform.TypeChecked +import groovy.transform.TypeCheckingMode +import org.gradle.api.tasks.SourceSet + class RetrolambdaUtil { static String capitalize(CharSequence self) { return self.length() == 0 ? "" : "" + Character.toUpperCase(self.charAt(0)) + self.subSequence(1, self.length()) } + + @TypeChecked(TypeCheckingMode.SKIP) + static File javaOutputDir(SourceSet set) { + try { + return set.java.outputDir + } catch (Exception e) { + return set.output.classesDir + } + } + + @TypeChecked(TypeCheckingMode.SKIP) + static File groovyOutputDir(SourceSet set) { + try { + return set.groovy.outputDir + } catch (Exception e) { + return set.output.classesDir + } + } } diff --git a/gradle-retrolambda/src/test/java/me/tatarka/AndroidAppPluginTest.java b/gradle-retrolambda/src/test/java/me/tatarka/AndroidAppPluginTest.java index ddecfcd..1812ad6 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/AndroidAppPluginTest.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/AndroidAppPluginTest.java @@ -15,11 +15,7 @@ import java.util.Arrays; import java.util.Collection; -import static me.tatarka.TestHelpers.findFile; -import static me.tatarka.TestHelpers.getPluginClasspath; -import static me.tatarka.TestHelpers.newestSupportedAndroidPluginVersion; -import static me.tatarka.TestHelpers.oldestSupportedAndroidPluginVersion; -import static me.tatarka.TestHelpers.writeFile; +import static me.tatarka.TestHelpers.*; import static org.assertj.core.api.Assertions.assertThat; @RunWith(Parameterized.class) @@ -38,19 +34,22 @@ public static Collection data() { private final String androidVersion; private final String gradleVersion; private final String buildToolsVersion; + private final String kotlinVersion; private File rootDir; private File buildFile; - public AndroidAppPluginTest(String androidVersion, String gradleVersion, String buildToolsVersion) { + public AndroidAppPluginTest(String androidVersion, String gradleVersion, String buildToolsVersion, String kotlinVersion) { this.androidVersion = androidVersion; this.gradleVersion = gradleVersion; this.buildToolsVersion = buildToolsVersion; + this.kotlinVersion = kotlinVersion; } @Before public void setup() throws Exception { rootDir = testProjectDir.getRoot(); buildFile = testProjectDir.newFile("build.gradle"); + copyLocalPropertiesIfExists(rootDir); } @Test @@ -75,6 +74,7 @@ public void assembleDebug() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -92,7 +92,7 @@ public void assembleDebug() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -147,6 +147,7 @@ public void assembleDebugIncremental() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -164,7 +165,7 @@ public void assembleDebugIncremental() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -240,6 +241,7 @@ public void assembleDebugIncrementalShouldntLeak() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -257,7 +259,7 @@ public void assembleDebugIncrementalShouldntLeak() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -293,13 +295,15 @@ public void assembleDebugIncrementalShouldntLeak() throws Exception { assertThat(lambdaClassFile).exists(); // delete the java file - javaFile.delete(); + if (!javaFile.delete()) { + throw new Exception("Failed to delete file: " + javaFile); + } errorOutput = new StringWriter(); result = GradleRunner.create() .withGradleVersion(gradleVersion) .withProjectDir(rootDir) - .withArguments("assembleDebug", "--stacktrace", "-Pandroid.enableAapt2=false") + .withArguments("assembleDebug", "--stacktrace", "-Pandroid.enableAapt2=false", "--debug") .forwardStdError(errorOutput) .build(); @@ -329,6 +333,7 @@ public void unitTest() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -350,7 +355,7 @@ public void unitTest() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -414,6 +419,7 @@ public void androidTest() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -494,7 +500,7 @@ public void withKotlin() throws Exception { " dependencies {\n" + " classpath files(" + getPluginClasspath() + ")\n" + " classpath 'com.android.tools.build:gradle:" + androidVersion + "'\n" + - " classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0'" + + " classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:" + kotlinVersion + "'" + " }\n" + "}\n" + "\n" + @@ -503,6 +509,7 @@ public void withKotlin() throws Exception { "apply plugin: 'kotlin-android'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -523,7 +530,7 @@ public void withKotlin() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); diff --git a/gradle-retrolambda/src/test/java/me/tatarka/AndroidFeaturePluginTest.java b/gradle-retrolambda/src/test/java/me/tatarka/AndroidFeaturePluginTest.java index 110ee66..1386aa0 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/AndroidFeaturePluginTest.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/AndroidFeaturePluginTest.java @@ -16,11 +16,7 @@ import java.util.Arrays; import java.util.Collection; -import static me.tatarka.TestHelpers.findFile; -import static me.tatarka.TestHelpers.getPluginClasspath; -import static me.tatarka.TestHelpers.newestSupportedAndroidPluginVersion; -import static me.tatarka.TestHelpers.oldestSupportedAndroidFeaturePluginVersion; -import static me.tatarka.TestHelpers.writeFile; +import static me.tatarka.TestHelpers.*; import static org.assertj.core.api.Assertions.assertThat; @RunWith(Parameterized.class) @@ -39,19 +35,22 @@ public static Collection data() { private final String androidVersion; private final String gradleVersion; private final String buildToolsVersion; + private final String compileSdkVersion; private File rootDir; private File buildFile; - public AndroidFeaturePluginTest(String androidVersion, String gradleVersion, String buildToolsVersion) { + public AndroidFeaturePluginTest(String androidVersion, String gradleVersion, String buildToolsVersion, String kotlinVersion) { this.androidVersion = androidVersion; this.gradleVersion = gradleVersion; this.buildToolsVersion = buildToolsVersion; + this.compileSdkVersion = buildToolsVersion.substring(0, buildToolsVersion.indexOf('.')); } @Before public void setup() throws Exception { rootDir = testProjectDir.getRoot(); buildFile = testProjectDir.newFile("build.gradle"); + copyLocalPropertiesIfExists(rootDir); } @Test @@ -74,11 +73,13 @@ public void assembleDebug() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + + " jcenter()\n" + "}\n" + "\n" + "android {\n" + - " compileSdkVersion 24\n" + + " compileSdkVersion " + compileSdkVersion + "\n" + " buildToolsVersion '" + buildToolsVersion + "'\n" + " \n" + " defaultConfig {\n" + @@ -91,7 +92,7 @@ public void assembleDebug() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -146,11 +147,13 @@ public void unitTest() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + + " jcenter()\n" + "}\n" + "\n" + "android {\n" + - " compileSdkVersion 24\n" + + " compileSdkVersion " + compileSdkVersion + "\n" + " buildToolsVersion '" + buildToolsVersion + "'\n" + " \n" + " defaultConfig {\n" + @@ -167,7 +170,7 @@ public void unitTest() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -231,11 +234,13 @@ public void androidTest() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + + " jcenter()\n" + "}\n" + "\n" + "android {\n" + - " compileSdkVersion 23\n" + + " compileSdkVersion " + compileSdkVersion + "\n" + " buildToolsVersion '" + buildToolsVersion + "'\n" + " \n" + " defaultConfig {\n" + @@ -254,7 +259,7 @@ public void androidTest() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); diff --git a/gradle-retrolambda/src/test/java/me/tatarka/AndroidLibPluginTest.java b/gradle-retrolambda/src/test/java/me/tatarka/AndroidLibPluginTest.java index 788f0ef..731bab6 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/AndroidLibPluginTest.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/AndroidLibPluginTest.java @@ -16,11 +16,7 @@ import java.util.Arrays; import java.util.Collection; -import static me.tatarka.TestHelpers.findFile; -import static me.tatarka.TestHelpers.getPluginClasspath; -import static me.tatarka.TestHelpers.newestSupportedAndroidPluginVersion; -import static me.tatarka.TestHelpers.oldestSupportedAndroidPluginVersion; -import static me.tatarka.TestHelpers.writeFile; +import static me.tatarka.TestHelpers.*; import static org.assertj.core.api.Assertions.assertThat; @RunWith(Parameterized.class) @@ -39,19 +35,22 @@ public static Collection data() { private final String androidVersion; private final String gradleVersion; private final String buildToolsVersion; + private final String compileSdkVersion; private File rootDir; private File buildFile; - public AndroidLibPluginTest(String androidVersion, String gradleVersion, String buildToolsVersion) { + public AndroidLibPluginTest(String androidVersion, String gradleVersion, String buildToolsVersion, String kotlinVersion) { this.androidVersion = androidVersion; this.gradleVersion = gradleVersion; this.buildToolsVersion = buildToolsVersion; + this.compileSdkVersion = buildToolsVersion.substring(0, buildToolsVersion.indexOf('.')); } @Before public void setup() throws Exception { rootDir = testProjectDir.getRoot(); buildFile = testProjectDir.newFile("build.gradle"); + copyLocalPropertiesIfExists(rootDir); } @Test @@ -74,11 +73,13 @@ public void assembleDebug() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + + " jcenter()\n" + "}\n" + "\n" + "android {\n" + - " compileSdkVersion 24\n" + + " compileSdkVersion " + compileSdkVersion + "\n" + " buildToolsVersion '" + buildToolsVersion + "'\n" + " \n" + " defaultConfig {\n" + @@ -91,7 +92,7 @@ public void assembleDebug() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -146,11 +147,12 @@ public void unitTest() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + "android {\n" + - " compileSdkVersion 24\n" + + " compileSdkVersion " + compileSdkVersion + "\n" + " buildToolsVersion '" + buildToolsVersion + "'\n" + " \n" + " defaultConfig {\n" + @@ -167,7 +169,7 @@ public void unitTest() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); @@ -231,11 +233,12 @@ public void androidTest() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + "android {\n" + - " compileSdkVersion 23\n" + + " compileSdkVersion " + compileSdkVersion + "\n" + " buildToolsVersion '" + buildToolsVersion + "'\n" + " \n" + " defaultConfig {\n" + @@ -254,7 +257,7 @@ public void androidTest() throws Exception { writeFile(manifestFile, //language="XML" - "\n" + " \n" + ""); diff --git a/gradle-retrolambda/src/test/java/me/tatarka/AndroidTestPluginTest.java b/gradle-retrolambda/src/test/java/me/tatarka/AndroidTestPluginTest.java index 9e6723c..f5a5dbc 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/AndroidTestPluginTest.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/AndroidTestPluginTest.java @@ -16,9 +16,7 @@ import java.util.Arrays; import java.util.Collection; -import static me.tatarka.TestHelpers.getPluginClasspath; -import static me.tatarka.TestHelpers.newestSupportedAndroidPluginVersion; -import static me.tatarka.TestHelpers.writeFile; +import static me.tatarka.TestHelpers.*; import static org.assertj.core.api.Assertions.assertThat; @RunWith(Parameterized.class) @@ -39,7 +37,7 @@ public static Collection data() { private final String buildToolsVersion; private File rootDir; - public AndroidTestPluginTest(String androidVersion, String gradleVersion, String buildToolsVersion) { + public AndroidTestPluginTest(String androidVersion, String gradleVersion, String buildToolsVersion, String kotlinVersion) { this.androidVersion = androidVersion; this.gradleVersion = gradleVersion; this.buildToolsVersion = buildToolsVersion; @@ -49,6 +47,7 @@ public AndroidTestPluginTest(String androidVersion, String gradleVersion, String public void setup() throws Exception { rootDir = testProjectDir.getRoot(); testProjectDir.newFile("build.gradle"); + copyLocalPropertiesIfExists(rootDir); } @Test @@ -79,6 +78,7 @@ public void test() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + @@ -133,6 +133,7 @@ public void test() throws Exception { "apply plugin: 'me.tatarka.retrolambda'\n" + "\n" + "repositories {\n" + + " maven { url 'https://maven.google.com' }\n" + " mavenCentral()\n" + "}\n" + "\n" + diff --git a/gradle-retrolambda/src/test/java/me/tatarka/GroovyPluginTest.java b/gradle-retrolambda/src/test/java/me/tatarka/GroovyPluginTest.java index 547d878..454ecce 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/GroovyPluginTest.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/GroovyPluginTest.java @@ -10,22 +10,41 @@ import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; import java.io.File; import java.io.StringWriter; +import java.util.Arrays; +import java.util.Collection; import static me.tatarka.TestHelpers.findFile; import static me.tatarka.TestHelpers.getPluginClasspath; +import static me.tatarka.TestHelpers.newestSupportedGradleVersion; +import static me.tatarka.TestHelpers.oldestSupportedGradleVersion; import static me.tatarka.TestHelpers.writeFile; import static org.assertj.core.api.Assertions.assertThat; -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public class GroovyPluginTest { + + @Parameterized.Parameters(name = "{0}") + public static Collection data() { + return Arrays.asList(new Object[][]{ + oldestSupportedGradleVersion(), + newestSupportedGradleVersion() + }); + } + @Rule public final TemporaryFolder testProjectDir = new TemporaryFolder(); + private final String gradleVersion; private File rootDir; private File buildFile; + public GroovyPluginTest(String gradleVersion) { + this.gradleVersion = gradleVersion; + } + @Before public void setup() throws Exception { rootDir = testProjectDir.getRoot(); @@ -62,6 +81,7 @@ public void assemble() throws Exception { StringWriter errorOutput = new StringWriter(); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withProjectDir(rootDir) .withArguments("assemble", "--stacktrace") .forwardStdError(errorOutput) @@ -130,6 +150,7 @@ public void test() throws Exception { StringWriter errorOutput = new StringWriter(); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withProjectDir(rootDir) .withArguments("test", "--stacktrace") .forwardStdError(errorOutput) @@ -177,6 +198,7 @@ public void run() throws Exception { StringWriter errorOutput = new StringWriter(); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withProjectDir(rootDir) .withArguments("run") .forwardStdError(errorOutput) diff --git a/gradle-retrolambda/src/test/java/me/tatarka/JavaPluginTest.java b/gradle-retrolambda/src/test/java/me/tatarka/JavaPluginTest.java index febd710..0f7752c 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/JavaPluginTest.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/JavaPluginTest.java @@ -10,22 +10,42 @@ import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; import java.io.File; import java.io.StringWriter; +import java.util.Arrays; +import java.util.Collection; import static me.tatarka.TestHelpers.findFile; import static me.tatarka.TestHelpers.getPluginClasspath; +import static me.tatarka.TestHelpers.newestSupportedGradleVersion; +import static me.tatarka.TestHelpers.oldestSupportedGradleVersion; import static me.tatarka.TestHelpers.writeFile; import static org.assertj.core.api.Assertions.assertThat; -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public class JavaPluginTest { + + @Parameterized.Parameters(name = "{0}") + public static Collection data() { + return Arrays.asList(new Object[][]{ + oldestSupportedGradleVersion(), + newestSupportedGradleVersion() + }); + } + @Rule public final TemporaryFolder testProjectDir = new TemporaryFolder(); + private final String gradleVersion; + private File rootDir; private File buildFile; + public JavaPluginTest(String gradleVersion) { + this.gradleVersion = gradleVersion; + } + @Before public void setup() throws Exception { rootDir = testProjectDir.getRoot(); @@ -58,6 +78,7 @@ public void assemble() throws Exception { StringWriter errorOutput = new StringWriter(); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withProjectDir(rootDir) .withArguments("assemble", "--stacktrace") .forwardStdError(errorOutput) @@ -125,6 +146,7 @@ public void test() throws Exception { StringWriter errorOutput = new StringWriter(); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withProjectDir(rootDir) .withArguments("test", "--stacktrace") .forwardStdError(errorOutput) @@ -168,6 +190,7 @@ public void run() throws Exception { StringWriter errorOutput = new StringWriter(); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withProjectDir(rootDir) .withArguments("run") .forwardStdError(errorOutput) diff --git a/gradle-retrolambda/src/test/java/me/tatarka/TestHelpers.java b/gradle-retrolambda/src/test/java/me/tatarka/TestHelpers.java index a2dc88e..5272a16 100644 --- a/gradle-retrolambda/src/test/java/me/tatarka/TestHelpers.java +++ b/gradle-retrolambda/src/test/java/me/tatarka/TestHelpers.java @@ -1,5 +1,7 @@ package me.tatarka; +import org.apache.commons.io.FileUtils; + import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; @@ -47,27 +49,38 @@ public static void writeFile(File file, String content) throws IOException { } } + public static String[] oldestSupportedGradleVersion() { + return new String[]{"2.6"}; + } + + public static String[] newestSupportedGradleVersion() { + return new String[]{"5.1.1"}; + } + public static String[] oldestSupportedAndroidPluginVersion() { return new String[]{ /*androidPluginVersion=*/"1.5.0", - /*gradleVersion=*/"2.5", - /*buildToolsVersion=*/"24.0.3" + /*gradleVersion=*/"2.6", + /*buildToolsVersion=*/"24.0.3", + /*kotlinVersion=*/"1.1.0", }; } public static String[] oldestSupportedAndroidFeaturePluginVersion() { return new String[]{ - /*androidPluginVersion=*/"3.0.0-alpha3", - /*gradleVersion=*/"4.0-milestone-1", - /*buildToolsVersion=*/"25.0.2" + /*androidPluginVersion=*/"3.1.0", + /*gradleVersion=*/"4.4", + /*buildToolsVersion=*/"26.0.2", + /*kotlinVersion=*/"1.1.0", }; } public static String[] newestSupportedAndroidPluginVersion() { return new String[]{ /*androidPluginVersion=*/currentAndroidPluginVersion(), - /*gradleVersion=*/"4.1-milestone-1", - /*buildToolsVersion=*/"26.0.0" + /*gradleVersion=*/"5.4", + /*buildToolsVersion=*/"28.0.3", + /*kotlinVersion=*/"1.3.10", }; } @@ -96,4 +109,11 @@ public FileVisitResult visitFile(Path path, BasicFileAttributes basicFileAttribu }); return result[0]; } + + public static void copyLocalPropertiesIfExists(File destinationDir) throws IOException { + File localProperties = new File("../local.properties"); + if (localProperties.exists()) { + FileUtils.copyFile(localProperties, new File(destinationDir, "local.properties")); + } + } } diff --git a/gradle.properties b/gradle.properties index f682c3f..5fd0f30 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ group = me.tatarka -version = 3.7.0 -androidPluginVersion = 3.0.0-alpha7 -useAlpha = true \ No newline at end of file +version = 3.7.1 +androidPluginVersion = 3.4.0 +useAlpha = true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index dbbc757..5c2d1cf 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9ca2ff2..5a3e1a9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Jul 23 13:51:26 EDT 2017 +#Sun Apr 21 14:21:17 EDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-milestone-1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-all.zip diff --git a/gradlew b/gradlew index 4453cce..b0d6d0a 100755 --- a/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# 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. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,16 +44,16 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,7 +171,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/gradlew.bat b/gradlew.bat index e95643d..15e1ee3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @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 DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/sample-android-app/build.gradle b/sample-android-app/build.gradle index e50f41c..c1b6eaf 100644 --- a/sample-android-app/build.gradle +++ b/sample-android-app/build.gradle @@ -14,6 +14,7 @@ apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' repositories { + google() jcenter() } @@ -25,12 +26,12 @@ dependencies { annotationProcessor "com.google.dagger:dagger-compiler:2.6" compileOnly 'javax.annotation:jsr250-api:1.0' - api 'com.android.support:appcompat-v7:25.3.1' + api 'com.android.support:appcompat-v7:26.0.0' - androidTestImplementation 'com.android.support:support-annotations:25.3.1' - androidTestImplementation 'com.android.support.test:runner:0.5' - androidTestImplementation 'com.android.support.test:rules:0.5' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' + androidTestImplementation 'com.android.support:support-annotations:26.0.0' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test:rules:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'org.assertj:assertj-core:2.5.0' testImplementation 'junit:junit:4.12' @@ -39,13 +40,12 @@ dependencies { } android { - compileSdkVersion 25 - buildToolsVersion '25.0.2' + compileSdkVersion 26 defaultConfig { applicationId "me.tatarka.retrolambda.sample.app" minSdkVersion 15 - targetSdkVersion 25 + targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/sample-android-feature/build.gradle b/sample-android-feature/build.gradle index 0bed8e5..fe739fc 100644 --- a/sample-android-feature/build.gradle +++ b/sample-android-feature/build.gradle @@ -11,6 +11,7 @@ buildscript { } repositories { + google() jcenter() } @@ -18,12 +19,11 @@ apply plugin: 'com.android.feature' apply plugin: 'me.tatarka.retrolambda' android { - compileSdkVersion 25 - buildToolsVersion '25.0.2' + compileSdkVersion 26 defaultConfig { minSdkVersion 15 - targetSdkVersion 25 + targetSdkVersion 26 versionCode 1 versionName "1.0" } @@ -42,5 +42,5 @@ android { } dependencies { - implementation 'com.android.support:support-annotations:25.3.1' + implementation 'com.android.support:support-annotations:26.0.0' } diff --git a/sample-android-lib/build.gradle b/sample-android-lib/build.gradle index 5988ce8..d9212ce 100644 --- a/sample-android-lib/build.gradle +++ b/sample-android-lib/build.gradle @@ -11,6 +11,7 @@ buildscript { } repositories { + google() jcenter() } @@ -18,12 +19,11 @@ apply plugin: 'com.android.library' apply plugin: 'me.tatarka.retrolambda' android { - compileSdkVersion 25 - buildToolsVersion '25.0.2' + compileSdkVersion 26 defaultConfig { minSdkVersion 15 - targetSdkVersion 25 + targetSdkVersion 26 versionCode 1 versionName "1.0" } @@ -42,5 +42,5 @@ android { } dependencies { - implementation 'com.android.support:support-annotations:25.3.1' + implementation 'com.android.support:support-annotations:26.0.0' } diff --git a/sample-android-test/build.gradle b/sample-android-test/build.gradle index ccf257b..0305084 100644 --- a/sample-android-test/build.gradle +++ b/sample-android-test/build.gradle @@ -18,12 +18,11 @@ apply plugin: 'com.android.test' apply plugin: 'me.tatarka.retrolambda' android { - compileSdkVersion 25 - buildToolsVersion '25.0.2' + compileSdkVersion 26 defaultConfig { minSdkVersion 15 - targetSdkVersion 25 + targetSdkVersion 26 testApplicationId 'me.tatarka.retrolambda.sample.test' testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' @@ -53,9 +52,9 @@ android { } dependencies { - implementation 'com.android.support:support-annotations:25.3.1' - implementation 'com.android.support.test:runner:0.5' - implementation 'com.android.support.test:rules:0.5' - implementation 'com.android.support.test.espresso:espresso-core:2.2.2' + implementation 'com.android.support:support-annotations:26.0.0' + implementation 'com.android.support.test:runner:1.0.2' + implementation 'com.android.support.test:rules:1.0.2' + implementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'org.assertj:assertj-core:2.5.0' }