diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/TestFixturesIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/TestFixturesIT.kt index e6d38c10edb..09919fbe50c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/TestFixturesIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/TestFixturesIT.kt @@ -94,6 +94,35 @@ class TestFixturesIT : KGPBaseTest() { } } + @DisplayName("Test associated 'functionalTest' compilation can compile and run with test and testFixtures in JVM project") + @MppGradlePluginTests + @GradleTest + fun testTestFixturesAndFunctionalTestsInJvmProject(gradleVersion: GradleVersion) { + project("jvm-test-fixtures-functionalTest", gradleVersion) { + build("functionalTest") { + assertOutputContains("src/main OK!") + assertOutputContains("src/test OK!") + assertOutputContains("src/testFixtures OK!") + assertOutputContains("src/functionalTest OK!") + } + } + } + + @DisplayName("Test associated 'functionalTest' compilation can compile and run with test and testFixtures in Multiplatform project") + @MppGradlePluginTests + @GradleTest + fun testTestFixturesAndFunctionalTestsInMppProject(gradleVersion: GradleVersion) { + project("mpp-test-fixtures-functionalTest", gradleVersion) { + build("functionalTest") { + assertOutputContains("src/main OK!") + assertOutputContains("src/test OK!") + assertOutputContains("src/testFixtures OK!") + assertOutputContains("src/functionalTest OK!") + } + } + } + + companion object { private const val JVM_TEST_FIXTURES_PROJECT_NAME = "jvm-test-fixtures" private const val MPP_TEST_FIXTURES_PROJECT_NAME = "mpp-test-fixtures" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/build.gradle.kts new file mode 100644 index 00000000000..9281f870d9a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/build.gradle.kts @@ -0,0 +1,32 @@ +@file:Suppress("HasPlatformType") + +plugins { + kotlin("jvm") + `java-test-fixtures` +} + +repositories { + mavenLocal() + mavenCentral() +} + +/* Create functionalTest (java) source set */ +val functionalTestSourceSet = sourceSets.create("functionalTest") +val functionalTestCompilation = kotlin.target.compilations.getByName("functionalTest") + +/* Associate 'functionalTest' with 'test' */ +functionalTestCompilation.associateWith(kotlin.target.compilations.getByName("test")) + +/* Create test task */ +val functionalTest = tasks.register("functionalTest") { + testClassesDirs = functionalTestSourceSet.output.classesDirs + classpath = functionalTestSourceSet.runtimeClasspath + testLogging { + events("passed", "skipped", "failed") + showStandardStreams = true + } +} + +dependencies { + testImplementation(kotlin("test-junit")) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/java/FunctionalTestJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/java/FunctionalTestJava.java new file mode 100644 index 00000000000..94cf96750a0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/java/FunctionalTestJava.java @@ -0,0 +1,2 @@ +public class FunctionalTestJava { +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/kotlin/Executable.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/kotlin/Executable.kt new file mode 100644 index 00000000000..e0602a54336 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/kotlin/Executable.kt @@ -0,0 +1,25 @@ +import kotlin.test.Test + +class Executable { + @Test + fun runTest() { + MainJava() + MainKotlin() + MainKotlinInternal() + println("src/main OK!") + + TestJava() + TestKotlin() + TestKotlinInternal() + println("src/test OK!") + + TestFixturesJava() + TestFixturesKotlin() + TestFixturesKotlinInternal() + println("src/testFixtures OK!") + + FunctionalTestKotlin() + FunctionalTestJava() + println("src/functionalTest OK!") + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/kotlin/FunctionalTestKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/kotlin/FunctionalTestKotlin.kt new file mode 100644 index 00000000000..24b508126c4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/functionalTest/kotlin/FunctionalTestKotlin.kt @@ -0,0 +1,2 @@ +internal class FunctionalTestKotlin { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/main/java/MainJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/main/java/MainJava.java new file mode 100644 index 00000000000..36b163072ac --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/main/java/MainJava.java @@ -0,0 +1,2 @@ +public class MainJava { +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/main/kotlin/MainKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/main/kotlin/MainKotlin.kt new file mode 100644 index 00000000000..300dd62cb19 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/main/kotlin/MainKotlin.kt @@ -0,0 +1,2 @@ +class MainKotlin +internal class MainKotlinInternal \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/test/java/TestJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/test/java/TestJava.java new file mode 100644 index 00000000000..08a50696fda --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/test/java/TestJava.java @@ -0,0 +1,9 @@ +public class TestJava { + public TestJava() { + new MainJava(); + new MainKotlin(); + + new TestFixturesJava(); + new TestFixturesKotlin(); + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/test/kotlin/TestKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/test/kotlin/TestKotlin.kt new file mode 100644 index 00000000000..704077cd2bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/test/kotlin/TestKotlin.kt @@ -0,0 +1,2 @@ +class TestKotlin +internal class TestKotlinInternal \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/testFixtures/java/TestFixturesJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/testFixtures/java/TestFixturesJava.java new file mode 100644 index 00000000000..3f2b030d5fd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/testFixtures/java/TestFixturesJava.java @@ -0,0 +1,6 @@ +public class TestFixturesJava { + public TestFixturesJava() { + new MainJava(); + new MainKotlin(); + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/testFixtures/kotlin/TestFixturesKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/testFixtures/kotlin/TestFixturesKotlin.kt new file mode 100644 index 00000000000..946c1d24c3f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvm-test-fixtures-functionalTest/src/testFixtures/kotlin/TestFixturesKotlin.kt @@ -0,0 +1,2 @@ +class TestFixturesKotlin +internal class TestFixturesKotlinInternal \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/build.gradle.kts new file mode 100644 index 00000000000..87c3bee26d0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/build.gradle.kts @@ -0,0 +1,36 @@ +plugins { + kotlin("multiplatform") + java + `java-test-fixtures` +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + jvm { withJava() } + val testCompilation = jvm().compilations.getByName("test") + testCompilation.associateWith(jvm().compilations.getByName("testFixtures")) + + val functionalTestCompilation = jvm().compilations.create("functionalTest") + functionalTestCompilation.associateWith(testCompilation) + + sourceSets.getByName("jvmTest").dependencies { + implementation(kotlin("test-junit")) + } +} + +/* Create test task */ +val functionalTest = tasks.register("functionalTest") { + val compilation = kotlin.jvm().compilations.getByName("functionalTest") + testClassesDirs = compilation.output.classesDirs + classpath = compilation.output.classesDirs + + project.files({ kotlin.jvm().compilations.getByName("functionalTest").runtimeDependencyFiles }) + + testLogging { + events("passed", "skipped", "failed") + showStandardStreams = true + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/java/FunctionalTestJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/java/FunctionalTestJava.java new file mode 100644 index 00000000000..94cf96750a0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/java/FunctionalTestJava.java @@ -0,0 +1,2 @@ +public class FunctionalTestJava { +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/kotlin/Executable.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/kotlin/Executable.kt new file mode 100644 index 00000000000..e0602a54336 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/kotlin/Executable.kt @@ -0,0 +1,25 @@ +import kotlin.test.Test + +class Executable { + @Test + fun runTest() { + MainJava() + MainKotlin() + MainKotlinInternal() + println("src/main OK!") + + TestJava() + TestKotlin() + TestKotlinInternal() + println("src/test OK!") + + TestFixturesJava() + TestFixturesKotlin() + TestFixturesKotlinInternal() + println("src/testFixtures OK!") + + FunctionalTestKotlin() + FunctionalTestJava() + println("src/functionalTest OK!") + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/kotlin/FunctionalTestKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/kotlin/FunctionalTestKotlin.kt new file mode 100644 index 00000000000..24b508126c4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmFunctionalTest/kotlin/FunctionalTestKotlin.kt @@ -0,0 +1,2 @@ +internal class FunctionalTestKotlin { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmMain/java/MainJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmMain/java/MainJava.java new file mode 100644 index 00000000000..36b163072ac --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmMain/java/MainJava.java @@ -0,0 +1,2 @@ +public class MainJava { +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmMain/kotlin/MainKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmMain/kotlin/MainKotlin.kt new file mode 100644 index 00000000000..300dd62cb19 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmMain/kotlin/MainKotlin.kt @@ -0,0 +1,2 @@ +class MainKotlin +internal class MainKotlinInternal \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTest/java/TestJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTest/java/TestJava.java new file mode 100644 index 00000000000..08a50696fda --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTest/java/TestJava.java @@ -0,0 +1,9 @@ +public class TestJava { + public TestJava() { + new MainJava(); + new MainKotlin(); + + new TestFixturesJava(); + new TestFixturesKotlin(); + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTest/kotlin/TestKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTest/kotlin/TestKotlin.kt new file mode 100644 index 00000000000..704077cd2bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTest/kotlin/TestKotlin.kt @@ -0,0 +1,2 @@ +class TestKotlin +internal class TestKotlinInternal \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTestFixtures/java/TestFixturesJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTestFixtures/java/TestFixturesJava.java new file mode 100644 index 00000000000..3f2b030d5fd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTestFixtures/java/TestFixturesJava.java @@ -0,0 +1,6 @@ +public class TestFixturesJava { + public TestFixturesJava() { + new MainJava(); + new MainKotlin(); + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTestFixtures/kotlin/TestFixturesKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTestFixtures/kotlin/TestFixturesKotlin.kt new file mode 100644 index 00000000000..946c1d24c3f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-test-fixtures-functionalTest/src/jvmTestFixtures/kotlin/TestFixturesKotlin.kt @@ -0,0 +1,2 @@ +class TestFixturesKotlin +internal class TestFixturesKotlinInternal \ No newline at end of file