From 4096eff5a9e73d6f824322c1a2cf6967d98eb98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20Wr=C3=B3tniak?= Date: Sun, 12 Nov 2023 15:50:28 +0100 Subject: [PATCH] Change additional classpath building Fixes #112 --- .../gradle/pitest/PitestPlugin.groovy | 15 ++++++++------- .../gradle/pitest/AndroidUtils.groovy | 8 ++++++++ .../gradle/pitest/PitestPluginTest.groovy | 11 +++++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main/groovy/pl/droidsonroids/gradle/pitest/PitestPlugin.groovy b/src/main/groovy/pl/droidsonroids/gradle/pitest/PitestPlugin.groovy index 99be027c..ab8a09b6 100644 --- a/src/main/groovy/pl/droidsonroids/gradle/pitest/PitestPlugin.groovy +++ b/src/main/groovy/pl/droidsonroids/gradle/pitest/PitestPlugin.groovy @@ -211,11 +211,11 @@ class PitestPlugin implements Plugin { if (ANDROID_GRADLE_PLUGIN_VERSION_NUMBER.major == 3 && project.findProperty("android.enableJetifier") != "true") { if (ANDROID_GRADLE_PLUGIN_VERSION_NUMBER.minor < 3) { - from(project.configurations["${variant.name}CompileClasspath"].copyRecursive { configuration -> - configuration.properties.dependencyProject == null + from(project.configurations["${variant.name}CompileClasspath"].copyRecursive { dependency -> + dependency.properties.dependencyProject == null }) - from(project.configurations["${variant.name}UnitTestCompileClasspath"].copyRecursive { configuration -> - configuration.properties.dependencyProject == null + from(project.configurations["${variant.name}UnitTestCompileClasspath"].copyRecursive { dependency -> + dependency.properties.dependencyProject == null }) } else if (ANDROID_GRADLE_PLUGIN_VERSION_NUMBER.minor < 4) { from(project.configurations["${variant.name}CompileClasspath"]) @@ -225,9 +225,10 @@ class PitestPlugin implements Plugin { from(project.configurations["compile"]) from(project.configurations["testCompile"]) } else if (ANDROID_GRADLE_PLUGIN_VERSION_NUMBER.major > 4 && project.findProperty("android.enableJetifier") != "true") { - from(project.configurations["${variant.name}UnitTestRuntimeClasspath"].copyRecursive { configuration -> - configuration.properties.dependencyProject == null && configuration.version != null - }) + Configuration unittestRuntimeConfig = project.configurations.getByName("${variant.name}UnitTestRuntimeClasspath") + from(unittestRuntimeConfig.copyRecursive { dependency -> + dependency.properties.dependencyProject == null && dependency.version != null + }.shouldResolveConsistentlyWith(unittestRuntimeConfig)) } from(project.configurations["pitestRuntimeOnly"]) from(project.files("${project.buildDir}/intermediates/sourceFolderJavaResources/${variant.dirName}")) diff --git a/src/test/groovy/pl/droidsonroids/gradle/pitest/AndroidUtils.groovy b/src/test/groovy/pl/droidsonroids/gradle/pitest/AndroidUtils.groovy index cb812434..91b0d783 100644 --- a/src/test/groovy/pl/droidsonroids/gradle/pitest/AndroidUtils.groovy +++ b/src/test/groovy/pl/droidsonroids/gradle/pitest/AndroidUtils.groovy @@ -82,6 +82,14 @@ class AndroidUtils { unitTests.returnDefaultValues = true } } + project.dependencies { + implementation("org.jetbrains.kotlin:kotlin-reflect:1.6.10") + testImplementation("io.mockk:mockk:1.11.0") + } + project.repositories { + mavenCentral() + google() + } project.apply(plugin: "pl.droidsonroids.pitest") return project } diff --git a/src/test/groovy/pl/droidsonroids/gradle/pitest/PitestPluginTest.groovy b/src/test/groovy/pl/droidsonroids/gradle/pitest/PitestPluginTest.groovy index 564a3292..8b5bec64 100644 --- a/src/test/groovy/pl/droidsonroids/gradle/pitest/PitestPluginTest.groovy +++ b/src/test/groovy/pl/droidsonroids/gradle/pitest/PitestPluginTest.groovy @@ -87,6 +87,17 @@ class PitestPluginTest extends Specification { assert classpath.find { it.toString().endsWith('sourceFolderJavaResources/test/freeBlue/release') } } + @SuppressWarnings("ImplicitClosureParameter") + void "combined task classpath contains dependencies in correct order"() { + when: + Project project = AndroidUtils.createSampleApplicationProject() + project.evaluate() + then: + Set classpath = project.tasks["${PitestPlugin.PITEST_TASK_NAME}FreeBlueRelease"].additionalClasspath.files + assert classpath.find { it.toString().endsWith('kotlin-reflect-1.3.72.jar') } == null + assert classpath.find { it.toString().endsWith('kotlin-reflect-1.6.10.jar') } + } + void "strange sdk versions get properly sanitized"() { when: String version = PitestPlugin.sanitizeSdkVersion('strange version (0)')