Test binaries DSL without a testData fixture
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmBinariesDslIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmBinariesDslIT.kt
index 2195481..86f5fcd 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmBinariesDslIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmBinariesDslIT.kt
@@ -11,6 +11,7 @@
 import org.gradle.util.GradleVersion
 import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
 import org.jetbrains.kotlin.gradle.testbase.*
+import org.jetbrains.kotlin.gradle.uklibs.applyMultiplatform
 import org.junit.jupiter.api.DisplayName
 import org.junit.jupiter.api.condition.OS
 import java.io.File
@@ -147,6 +148,65 @@
         }
     }
 
+    @DisplayName("Custom test binary distribution is runnable without testData")
+    @GradleTest
+    fun customTestBinaryDistributionIsRunnable_withoutTestData(gradleVersion: GradleVersion) {
+        val output = File.createTempFile("test-output", ".txt")
+        val testSourceName = "JvmTest"
+        val project = project("empty", gradleVersion) {
+            addKgpToBuildScriptCompilationClasspath()
+            buildScriptInjection {
+                project.applyMultiplatform {
+                    jvm {
+                        binaries {
+                            executable(KotlinCompilation.TEST_COMPILATION_NAME) {
+                                mainClass.set("${testSourceName}Kt")
+                            }
+                        }
+                    }
+                    sourceSets.commonMain.configure {
+                        it.compileSource(
+                            """
+                            fun commonMain() = java.io.FileWriter("${output.path}", true).use { 
+                                it.write("commonMain ")
+                            }
+                        """.trimIndent()
+                        )
+                    }
+                    sourceSets.jvmMain.configure {
+                        it.compileSource(
+                            """
+                            fun jvmMain() = java.io.FileWriter("${output.path}", true).use { 
+                                it.write("jvmMain")
+                            }
+                            """.trimIndent()
+                        )
+                    }
+                    sourceSets.jvmTest.configure {
+                        it.compileSource(
+                            """
+                            fun main() {
+                                commonMain()
+                                jvmMain()
+                            }
+                            """.trimIndent(),
+                            testSourceName,
+                        )
+                    }
+                }
+            }
+        }
+
+        project.build(":installJvmTestDist")
+        assertScriptExecutionIsSuccessful(
+            project.projectPath.resolve("build/install/empty-jvmTest/bin/empty")
+        )
+        assertEquals(
+            "commonMain jvmMain",
+            output.readText(),
+        )
+    }
+
     @DisplayName("Custom test binary distribution is runnable")
     @GradleTest
     fun customTestBinaryDistributionIsRunnable(gradleVersion: GradleVersion) {
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testGenerateSourceSets.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testGenerateSourceSets.kt
index d75df57..c3dce29 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testGenerateSourceSets.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testGenerateSourceSets.kt
@@ -18,14 +18,16 @@
 fun KotlinSourceSet.compileSource(
     @Language("kotlin")
     sourceContent: String,
+    sourceName: String? = null,
 ) {
     val identifier = "${name}_${project.generateIdentifier()}"
     val identifierPath = project.layout.buildDirectory.dir("generatedSourceDir_${identifier}")
+    val generatedSourceName = (sourceName ?: "generatedSource_${identifier}") + ".kt"
     kotlin.srcDir(
         project.tasks.create("generateSourceIn_${identifier}") { task ->
             task.outputs.dir(identifierPath)
             task.doLast {
-                identifierPath.get().asFile.resolve("generatedSource_${identifier}.kt").writeText(sourceContent)
+                identifierPath.get().asFile.resolve(generatedSourceName).writeText(sourceContent)
             }
         }
     )