Skip to content

Commit f3e8c6d

Browse files
authored
Merge pull request #106 from gradle/tt/add-runtime-compiletime-only-to-kotlin
Add runtimeOnly and compileOnly configurations to Kotlin testing
2 parents 3897132 + 2ef367b commit f3e8c6d

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,24 @@
11
package org.gradle.api.experimental.kotlin;
22

3+
import org.gradle.api.Action;
34
import org.gradle.api.experimental.common.HasCliExecutables;
45
import org.gradle.api.experimental.jvm.HasJavaTarget;
56
import org.gradle.api.experimental.jvm.HasJvmApplication;
7+
import org.gradle.api.experimental.kotlin.testing.Testing;
8+
import org.gradle.api.tasks.Nested;
9+
import org.gradle.declarative.dsl.model.annotations.Configuring;
610
import org.gradle.declarative.dsl.model.annotations.Restricted;
711

812
/**
913
* An application implemented using Kotlin and that targets a single JVM version.
1014
*/
1115
@Restricted
1216
public interface KotlinJvmApplication extends HasJavaTarget, HasJvmApplication, HasCliExecutables {
17+
@Nested
18+
Testing getTesting();
19+
20+
@Configuring
21+
default void testing(Action<? super Testing> action) {
22+
action.execute(getTesting());
23+
}
1324
}

unified-prototype/unified-plugin/plugin-kmp/src/main/java/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmApplicationPlugin.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.gradle.api.Plugin;
44
import org.gradle.api.Project;
5+
import org.gradle.api.artifacts.ConfigurationContainer;
56
import org.gradle.api.experimental.common.CliApplicationConventionsPlugin;
67
import org.gradle.api.experimental.jvm.internal.JvmPluginSupport;
78
import org.gradle.api.experimental.kmp.internal.KotlinPluginSupport;
@@ -12,6 +13,7 @@
1213
* Creates a declarative {@link KotlinJvmApplication} DSL model, applies the official Kotlin and application plugin,
1314
* and links the declarative model to the official plugin.
1415
*/
16+
@SuppressWarnings("UnstableApiUsage")
1517
abstract public class StandaloneKotlinJvmApplicationPlugin implements Plugin<Project> {
1618

1719
public static final String KOTLIN_JVM_APPLICATION = "kotlinJvmApplication";
@@ -35,7 +37,15 @@ private void linkDslModelToPlugin(Project project, KotlinJvmApplication dslModel
3537
KotlinPluginSupport.linkJavaVersion(project, dslModel);
3638
JvmPluginSupport.linkApplicationMainClass(project, dslModel);
3739
JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.getDependencies());
40+
configureTesting(project, dslModel);
3841

3942
dslModel.getRunTasks().add(project.getTasks().named("run"));
4043
}
44+
45+
private void configureTesting(Project project, KotlinJvmApplication dslModel) {
46+
ConfigurationContainer configurations = project.getConfigurations();
47+
configurations.getByName("testImplementation").fromDependencyCollector(dslModel.getTesting().getDependencies().getImplementation());
48+
configurations.getByName("testCompileOnly").fromDependencyCollector(dslModel.getTesting().getDependencies().getCompileOnly());
49+
configurations.getByName("testRuntimeOnly").fromDependencyCollector(dslModel.getTesting().getDependencies().getRuntimeOnly());
50+
}
4151
}

unified-prototype/unified-plugin/plugin-kmp/src/main/java/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmLibraryPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,7 @@ private void linkDslModelToPlugin(Project project, KotlinJvmLibrary dslModel) {
4646
private void configureTesting(Project project, KotlinJvmLibrary dslModel) {
4747
ConfigurationContainer configurations = project.getConfigurations();
4848
configurations.getByName("testImplementation").fromDependencyCollector(dslModel.getTesting().getDependencies().getImplementation());
49+
configurations.getByName("testCompileOnly").fromDependencyCollector(dslModel.getTesting().getDependencies().getCompileOnly());
50+
configurations.getByName("testRuntimeOnly").fromDependencyCollector(dslModel.getTesting().getDependencies().getRuntimeOnly());
4951
}
5052
}

unified-prototype/unified-plugin/plugin-kmp/src/main/java/org/gradle/api/experimental/kotlin/testing/KotlinTestDependencies.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@
2424
@Restricted
2525
public interface KotlinTestDependencies extends Dependencies {
2626
DependencyCollector getImplementation();
27+
DependencyCollector getCompileOnly();
28+
DependencyCollector getRuntimeOnly();
2729
}

0 commit comments

Comments
 (0)