Skip to content

Commit

Permalink
Allow tests without old jdk and deprecate old java
Browse files Browse the repository at this point in the history
If oldJdk or JAVA6/7_HOME is not set. The current java version will be
used to run tests. These properties are deprecated and will be removed
in a later version. Running gradle itself with java 6 or 7 is also
deprecated.
  • Loading branch information
evant committed Mar 3, 2017
1 parent 82fe818 commit f6adf36
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package me.tatarka

import groovy.transform.CompileStatic
import org.gradle.api.JavaVersion
import org.gradle.api.Nullable
import org.gradle.api.Project
import org.gradle.api.ProjectConfigurationException

Expand All @@ -31,7 +32,7 @@ public class RetrolambdaExtension {
List<String> jvmArgs = []
boolean incremental = true
boolean defaultMethods = false
boolean isOnJava8 = (System.properties.'java.version' as String).startsWith('1.8')
boolean isOnJava8 = JavaVersion.current().java8Compatible

private Project project
private String jdk = null
Expand Down Expand Up @@ -105,23 +106,21 @@ public class RetrolambdaExtension {
return jdk
}

@Deprecated
public void setOldJdk(String path) {
oldJdk = path
oldJdkSet = true
}

@Nullable
@Deprecated
public String getOldJdk() {
if (!oldJdkSet) {
oldJdk = findOldJdk()
oldJdkSet = true
}
return oldJdk
}

String tryGetOldJdk() {
String oldJdk = getOldJdk()
if (oldJdk == null) {
throw new ProjectConfigurationException("When running gradle with java 8, you must set the path to the old jdk, either with property retrolambda.oldJdk or environment variable JAVA5_HOME/JAVA6_HOME/JAVA7_HOME", null)
if (oldJdk != null) {
project.logger.warn("running unit tests with an old jdk is deprecated an will be removed in a later version.")
}
return oldJdk
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,17 @@ import org.gradle.api.plugins.JavaPlugin

@CompileStatic
public class RetrolambdaPlugin implements Plugin<Project> {
protected static String retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:2.5.0"
protected static String retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:2.5.1"

@Override
void apply(Project project) {
project.extensions.create('retrolambda', RetrolambdaExtension, project)

def retrolambda = project.extensions.create('retrolambda', RetrolambdaExtension, project)
def retrolambdaConfig = project.configurations.create("retrolambdaConfig")

if (!retrolambda.isOnJava8) {
project.logger.warn("running gradle with java ${JavaVersion.current().majorVersion} is deprecated and will be removed in a future version.")
}

retrolambdaConfig.defaultDependencies { DependencySet dependencies ->
dependencies.add(project.dependencies.create(retrolambdaCompile))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,9 @@ public class RetrolambdaPluginAndroid implements Plugin<Project> {
if (!retrolambda.onJava8) {
// Set JDK 8 for the compiler task
def javac = "${retrolambda.tryGetJdk()}/bin/javac"
if (!checkIfExecutableExists(javac)) throw new ProjectConfigurationException("Cannot find executable: $javac", null)
if (!checkIfExecutableExists(javac)) {
throw new ProjectConfigurationException("Cannot find executable: $javac", null)
}
javaCompile.options.fork = true
javaCompile.options.forkOptions.executable = javac
}
Expand All @@ -126,7 +128,9 @@ public class RetrolambdaPluginAndroid implements Plugin<Project> {
private static ensureRunOnJava8(RetrolambdaExtension retrolambda, Test test) {
if (!retrolambda.onJava8) {
def java = "${retrolambda.tryGetJdk()}/bin/java"
if (!checkIfExecutableExists(java)) throw new ProjectConfigurationException("Cannot find executable: $java", null)
if (!checkIfExecutableExists(java)) {
throw new ProjectConfigurationException("Cannot find executable: $java", null)
}
test.executable java
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public class RetrolambdaPluginGroovy implements Plugin<Project> {
@Override
void apply(Project project) {
project.afterEvaluate {
def retrolambda = project.extensions.getByType(RetrolambdaExtension)

project.sourceSets.all { SourceSet set ->
if (project.retrolambda.isIncluded(set.name)) {
def name = RetrolambdaUtil.capitalize(set.name)
Expand All @@ -44,8 +46,8 @@ public class RetrolambdaPluginGroovy implements Plugin<Project> {
inputDir = newOutputDir
outputDir = oldOutputDir
classpath = set.compileClasspath + project.files(newOutputDir)
javaVersion = project.retrolambda.javaVersion
jvmArgs = project.retrolambda.jvmArgs
javaVersion = retrolambda.javaVersion
jvmArgs = retrolambda.jvmArgs
}

// enable retrolambdaTask dynamically, based on up-to-date source set before running
Expand All @@ -61,18 +63,23 @@ public class RetrolambdaPluginGroovy implements Plugin<Project> {
// Set JDK 8 for compiler task
compileGroovyTask.doFirst {
it.options.fork = true
it.options.forkOptions.executable = "${project.retrolambda.tryGetJdk()}/bin/javac"
it.options.forkOptions.executable = "${retrolambda.tryGetJdk()}/bin/javac"
}
}
}
}

project.tasks.getByName("test").doFirst {
if (project.retrolambda.onJava8) {
//Ensure the tests run on java6/7
def oldJava = "${project.retrolambda.tryGetOldJdk()}/bin/java"
if (!checkIfExecutableExists(oldJava)) throw new ProjectConfigurationException("Cannot find executable: $oldJava", null)
executable oldJava
if (retrolambda.onJava8) {
//Run tests on java6/7 if the property is defined.
String oldJdkPath = retrolambda.oldJdk
if (oldJdkPath != null) {
def oldJava = "$oldJdkPath/bin/java"
if (!checkIfExecutableExists(oldJava)) {
throw new ProjectConfigurationException("Cannot find executable: $oldJava", null)
}
task.executable oldJava
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,15 @@ public class RetrolambdaPluginJava implements Plugin<Project> {

project.tasks.getByName("test").doFirst { Test task ->
if (retrolambda.onJava8) {
//Ensure the tests run on java6/7
def oldJava = "${retrolambda.tryGetOldJdk()}/bin/java"
if (!checkIfExecutableExists(oldJava)) throw new ProjectConfigurationException("Cannot find executable: $oldJava", null)
task.executable oldJava
//Run tests on java6/7 if the property is defined.
String oldJdkPath = retrolambda.oldJdk
if (oldJdkPath != null) {
def oldJava = "$oldJdkPath/bin/java"
if (!checkIfExecutableExists(oldJava)) {
throw new ProjectConfigurationException("Cannot find executable: $oldJava", null)
}
task.executable oldJava
}
}
}
}
Expand Down

0 comments on commit f6adf36

Please sign in to comment.