evant / gradle-retrolambda

A gradle plugin for getting java lambda support in java 6, 7 and android
Apache License 2.0
5.3k stars 449 forks source link

Tests does not compile using beta4 #194

Closed palaima closed 8 years ago

palaima commented 8 years ago

Using classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4'

Dependencies for tests

// Testing
def uiautomator_version = "2.1.1"
def ui_test_runner_version = "0.5"
def espresso_version = "2.2.2"
def mockito_unit_version = "2.0.31-beta" // for robolectric tests
def mockito_android_version = "1.10.19" // for integration tests
def dexmaker_version = "1.4"
def spoon_version = "1.2.1"
def robolectric_version = "3.1-rc1"
def junit_version = "4.12"
def assertj_core_version = "2.0M10"
def assertj_android_version = "1.1.0"
def assertj_rx_version = "0.1.0"

// Integration testing
    androidTestCompile("com.android.support.test.espresso:espresso-contrib:$espresso_version", excludeAndroidSupport)
    androidTestCompile("com.android.support.test.espresso:espresso-core:$espresso_version", excludeAndroidSupport)
    androidTestCompile "com.android.support.test:runner:$ui_test_runner_version"
    androidTestCompile "com.android.support.test:rules:$ui_test_runner_version"
    androidTestCompile "com.android.support.test.uiautomator:uiautomator-v18:$uiautomator_version"
    androidTestCompile "com.squareup.spoon:spoon-client:$spoon_version"
    androidTestCompile "org.mockito:mockito-core:$mockito_android_version"
    androidTestCompile "com.crittercism.dexmaker:dexmaker:$dexmaker_version"
    androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:$dexmaker_version"
    androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:$dexmaker_version"
    androidTestCompile "com.google.dagger:dagger:$dagger_version"
    androidTestApt "com.google.dagger:dagger-compiler:$dagger_version"
    androidTestApt project(':sql-processor')
    androidTestCompile "com.android.support:support-annotations:$android_support_version"

    // Unit testing
    testCompile "junit:junit:$junit_version"
    testCompile "org.robolectric:robolectric:$robolectric_version"
    testCompile "org.robolectric:shadows-play-services:$robolectric_version"
    testCompile "org.robolectric:shadows-support-v4:$robolectric_version"
    testCompile "org.robolectric:shadows-multidex:$robolectric_version"
    testCompile "org.mockito:mockito-core:$mockito_unit_version"
    testCompile "com.google.dagger:dagger:$dagger_version"
    testApt "com.google.dagger:dagger-compiler:$dagger_version"
    testApt project(':sql-processor')

    // Used for convenience data sharing between test variants
    testCompile("com.android.support.test.espresso:espresso-core:$espresso_version", excludeAndroidSupport)
    testCompile("com.android.support.test.espresso:espresso-contrib:$espresso_version", excludeAndroidSupport)

    androidTestCompile "org.easytesting:fest-assert-core:$assertj_core_version"
    androidTestCompile("uk.co.ribot.assertj-rx:assertj-rx:$assertj_rx_version", { exclude group: "io.reactivex" })
    androidTestCompile("com.squareup.assertj:assertj-android:$assertj_android_version", excludeAndroidSupport)
    androidTestCompile("com.squareup.assertj:assertj-android-design:$assertj_android_version", excludeAndroidSupport)
    androidTestCompile("com.squareup.assertj:assertj-android-support-v4:$assertj_android_version", excludeAndroidSupport)
    androidTestCompile("com.squareup.assertj:assertj-android-appcompat-v7:$assertj_android_version", excludeAndroidSupport)
    androidTestCompile("com.squareup.assertj:assertj-android-cardview-v7:$assertj_android_version", excludeAndroidSupport)
    androidTestCompile("com.squareup.assertj:assertj-android-recyclerview-v7:$assertj_android_version", excludeAndroidSupport)

    testCompile "org.easytesting:fest-assert-core:$assertj_core_version"
    testCompile("uk.co.ribot.assertj-rx:assertj-rx:$assertj_rx_version", { exclude group: "io.reactivex" })
    testCompile("com.squareup.assertj:assertj-android:$assertj_android_version", excludeAndroidSupport)
    testCompile("com.squareup.assertj:assertj-android-design:$assertj_android_version", excludeAndroidSupport)
    testCompile("com.squareup.assertj:assertj-android-support-v4:$assertj_android_version", excludeAndroidSupport)
    testCompile("com.squareup.assertj:assertj-android-appcompat-v7:$assertj_android_version", excludeAndroidSupport)
    testCompile("com.squareup.assertj:assertj-android-cardview-v7:$assertj_android_version", excludeAndroidSupport)
    testCompile("com.squareup.assertj:assertj-android-recyclerview-v7:$assertj_android_version", excludeAndroidSupport)

compiling tests with command ./gradlew assembleDebugAndroidTest --debug gives error

 Included files:   all
15:50:47.033 [INFO] [system.out] Agent enabled:    false
15:50:47.161 [INFO] [system.out] Error! Failed to run Retrolambda
15:50:47.161 [INFO] [system.out] java.lang.RuntimeException: Failed to backport class: com/xxx/xxx/test/ui/ScreenTest$1
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:128)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:107)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Transformers.backportClass(Transformers.java:47)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Retrolambda.run(Retrolambda.java:77)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Main.main(Main.java:26)
15:50:47.162 [INFO] [system.out] Caused by: java.lang.NoClassDefFoundError: android/support/test/espresso/ViewAction
15:50:47.162 [INFO] [system.out]        at java.lang.ClassLoader.defineClass1(Native Method)
15:50:47.162 [INFO] [system.out]        at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
15:50:47.162 [INFO] [system.out]        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
15:50:47.162 [INFO] [system.out]        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
15:50:47.162 [INFO] [system.out]        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
15:50:47.162 [INFO] [system.out]        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
15:50:47.162 [INFO] [system.out]        at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
15:50:47.162 [INFO] [system.out]        at java.security.AccessController.doPrivileged(Native Method)
15:50:47.162 [INFO] [system.out]        at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.NonDelegatingClassLoader.loadClass(NonDelegatingClassLoader.java:25)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations.loadClass(BackportLambdaInvocations.java:180)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations.access$100(BackportLambdaInvocations.java:18)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.backportLambda(BackportLambdaInvocations.java:167)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.visitInvokeDynamicInsn(BackportLambdaInvocations.java:160)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.asm.ClassReader.readCode(ClassReader.java:1452)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.asm.ClassReader.readMethod(ClassReader.java:1017)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:693)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:506)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Transformers.lambda$transform$5(Transformers.java:107)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:124)
15:50:47.162 [INFO] [system.out]        ... 4 more
15:50:47.162 [INFO] [system.out] Caused by: java.lang.ClassNotFoundException: android.support.test.espresso.ViewAction
15:50:47.162 [INFO] [system.out]        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
15:50:47.162 [INFO] [system.out]        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
15:50:47.162 [INFO] [system.out]        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
15:50:47.162 [INFO] [system.out]        at net.orfjackal.retrolambda.NonDelegatingClassLoader.loadClass(NonDelegatingClassLoader.java:27)
15:50:47.162 [INFO] [system.out]        ... 24 more
15:50:47.168 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: FAILED
15:50:47.168 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java'' finished with exit value 1 (state: FAILED)
15:50:47.169 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':app:transformClassesWithRetrolambdaForDevDebugAndroidTest'
15:50:47.169 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :app:transformClassesWithRetrolambdaForDevDebugAndroidTest FAILED
15:50:47.169 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :app:transformClassesWithRetrolambdaForDevDebugAndroidTest (Thread[main,5,main]) completed. Took 0.461 secs.
15:50:47.169 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[main,5,main]] finished, busy: 16.76 secs, idle: 0.006 secs
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] 
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] 
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':app:transformClassesWithRetrolambdaForDevDebugAndroidTest'.
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
15:50:47.176 [ERROR] [org.gradle.BuildExceptionReporter] 

There is no issues when using with 'me.tatarka:gradle-retrolambda:3.2.5'

paveldudka commented 8 years ago

as a temp workaround you could list test dependencies as "provided" dependency for main app configuration. Dirty, but does the trick as a temp solution.

For instance, in this case Retrolambda complains about missing Espresso class, so I would assume in your app/build.gradle you have test espresso dependency:

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

What you can do - is to add the following:

provided 'com.android.support.test.espresso:espresso-core:2.2.2'

So you have both androidTestCompile and provided configurations

evant commented 8 years ago

Fixed in 3.3.0