From 0f799d593dfa964e71a2d19d15a9926c9e051bb8 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 8 Sep 2020 14:44:10 +0300 Subject: [PATCH] Wizard: specify test platform to use on JVM #KT-37965 fixed --- .../jvmTarget/build.gradle | 3 + .../jvmTarget/build.gradle.kts | 3 + .../jvmTargetWithJava/build.gradle | 3 + .../jvmTargetWithJava/build.gradle.kts | 3 + .../expected/a/build.gradle | 3 + .../expected/a/build.gradle.kts | 3 + .../jvmToJvmDependency/expected/a/pom.xml | 8 ++ .../expected/b/build.gradle | 3 + .../expected/b/build.gradle.kts | 3 + .../jvmToJvmDependency/expected/b/pom.xml | 8 ++ .../expected/c/build.gradle | 3 + .../expected/c/build.gradle.kts | 3 + .../jvmToJvmDependency/expected/c/pom.xml | 8 ++ .../expected/d/build.gradle | 3 + .../expected/d/build.gradle.kts | 3 + .../jvmToJvmDependency/expected/d/pom.xml | 8 ++ .../expected/b/build.gradle | 3 + .../expected/b/build.gradle.kts | 3 + .../expected/b/c/build.gradle | 3 + .../expected/b/c/build.gradle.kts | 3 + .../expected/b/c/pom.xml | 8 ++ .../expected/b/pom.xml | 8 ++ .../expected/build.gradle | 3 + .../expected/build.gradle.kts | 3 + .../expected/pom.xml | 8 ++ .../kotlinJvm/build.gradle | 3 + .../kotlinJvm/build.gradle.kts | 3 + .../simpleMultiplatform/build.gradle | 3 + .../simpleMultiplatform/build.gradle.kts | 3 + .../backendApplication/build.gradle | 3 + .../backendApplication/build.gradle.kts | 3 + .../consoleApplication/build.gradle | 3 + .../consoleApplication/build.gradle.kts | 3 + .../fullStackWebApplication/build.gradle | 3 + .../fullStackWebApplication/build.gradle.kts | 3 + .../multiplatformLibrary/build.gradle | 3 + .../multiplatformLibrary/build.gradle.kts | 3 + .../kotlin/tools/projectWizard/Versions.kt | 6 ++ .../ir/buildsystem/DependencyIR.kt | 19 +++-- .../ir/buildsystem/gradle/GradleIRBuilder.kt | 2 + .../ir/buildsystem/maven/MavenIR.kt | 14 ++++ .../AndroidModuleConfigurator.kt | 5 ++ .../ModuleConfiguratorWithTests.kt | 82 ++++++++++++++----- .../NativeTargetConfigurator.kt | 14 ++-- .../moduleConfigurators/TargetConfigurator.kt | 10 +++ .../moduleConfigurators/configurators.kt | 1 + .../settings/buildsystem/Module.kt | 15 ++-- 47 files changed, 273 insertions(+), 41 deletions(-) diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle index 4d86813ea33..0834910b49e 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle @@ -15,6 +15,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = '1.8' } + testRuns["test"].executionTask.configure { + useJUnit() + } } sourceSets { jvmMain { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle.kts index 4034b26440c..f63691b3357 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/build.gradle.kts @@ -15,6 +15,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = "1.8" } + testRuns["test"].executionTask.configure { + useJUnit() + } } sourceSets { val jvmMain by getting diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle index 33d5d4ed1ed..58bbf6681a2 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle @@ -16,6 +16,9 @@ kotlin { kotlinOptions.jvmTarget = '1.8' } withJava() + testRuns["test"].executionTask.configure { + useJUnit() + } } sourceSets { jvmMain { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle.kts index 74d0b84aa23..b07bbbb46e5 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/build.gradle.kts @@ -16,6 +16,9 @@ kotlin { kotlinOptions.jvmTarget = "1.8" } withJava() + testRuns["test"].executionTask.configure { + useJUnit() + } } sourceSets { val jvmMain by getting diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle index dd2bc288b05..a7c8f1980a2 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle @@ -15,6 +15,9 @@ dependencies { implementation project(':c') testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle.kts index 940edf72a54..f1542fd52c7 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/build.gradle.kts @@ -17,6 +17,9 @@ dependencies { implementation(project(":c")) testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/pom.xml index c42a9c43a6f..638fdcd27cb 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/a/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle index f83b3e99a8f..09d451668fd 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle @@ -15,6 +15,9 @@ dependencies { implementation project(':d') testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle.kts index 892f14087f8..b590b3fda51 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/build.gradle.kts @@ -17,6 +17,9 @@ dependencies { implementation(project(":d")) testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/pom.xml index 806e8e7b87d..522de1d1b18 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/b/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle index 661eeff5a77..2ea3a0d2788 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle @@ -13,6 +13,9 @@ repositories { dependencies { testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle.kts index 8c22e352f22..bde194fae7f 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/build.gradle.kts @@ -15,6 +15,9 @@ repositories { dependencies { testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/pom.xml index fc79d2705da..e16336a6122 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/c/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle index abacae054f7..c88555163af 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle @@ -14,6 +14,9 @@ dependencies { implementation project(':a') testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle.kts index 91bbaf9f77c..40fda1eb0e9 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/build.gradle.kts @@ -16,6 +16,9 @@ dependencies { implementation(project(":a")) testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/pom.xml index bf555762061..8b8ef71ee34 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/expected/d/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle index d6768c9b3e5..10bda66f74d 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle @@ -14,6 +14,9 @@ dependencies { rootProject testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle.kts index 5559e6c3225..2cd64ee07be 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/build.gradle.kts @@ -16,6 +16,9 @@ dependencies { rootProject testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle index 51da42571ce..7e6cbde2755 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle @@ -14,6 +14,9 @@ dependencies { implementation project(':b') testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle.kts index 1cc910e9136..bb4248a78e0 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/build.gradle.kts @@ -16,6 +16,9 @@ dependencies { implementation(project(":b")) testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/pom.xml index a529785f7f0..c0495e92edc 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/c/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/pom.xml index e3928c674b7..e0abdab6db3 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/b/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle index 661eeff5a77..2ea3a0d2788 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle @@ -13,6 +13,9 @@ repositories { dependencies { testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle.kts index 8c22e352f22..bde194fae7f 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/build.gradle.kts @@ -15,6 +15,9 @@ repositories { dependencies { testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/pom.xml index 0df8c3eee88..f2490c062a0 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/expected/pom.xml @@ -60,6 +60,14 @@ + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle index 37b3fdde778..f9e6b158a2c 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle @@ -13,6 +13,9 @@ repositories { dependencies { testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.6' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle.kts index 7fc188bc2e1..24d4743233c 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/build.gradle.kts @@ -15,6 +15,9 @@ repositories { dependencies { testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.6" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle index 1d36eb7df9c..98b64a5020a 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle @@ -15,6 +15,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = '9' } + testRuns["test"].executionTask.configure { + useJUnit() + } } js('a', LEGACY) { browser { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle.kts index 74c94adf27f..08a1aff1b45 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/simpleMultiplatform/build.gradle.kts @@ -15,6 +15,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = "9" } + testRuns["test"].executionTask.configure { + useJUnit() + } } js("a", LEGACY) { browser { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle index b5ab1b84a43..b8b04864aea 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle @@ -13,6 +13,9 @@ repositories { dependencies { testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle.kts index 0a680471afb..270f6162c1c 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/backendApplication/build.gradle.kts @@ -15,6 +15,9 @@ repositories { dependencies { testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle index 5c95cf49d1b..cb20875bb7c 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle @@ -14,6 +14,9 @@ repositories { dependencies { testImplementation 'org.jetbrains.kotlin:kotlin-test-junit' } +test { + useJUnit() +} compileKotlin { kotlinOptions.jvmTarget = '1.8' } diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle.kts index 82c909f4843..42090664ee0 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/consoleApplication/build.gradle.kts @@ -16,6 +16,9 @@ repositories { dependencies { testImplementation(kotlin("test-junit")) } +tasks.test { + useJUnit() +} tasks.withType() { kotlinOptions.jvmTarget = "1.8" } diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle index 73bc5c001da..c15cea8d38c 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle @@ -28,6 +28,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = '1.8' } + testRuns["test"].executionTask.configure { + useJUnit() + } withJava() } js(LEGACY) { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts index c4103decc40..7374c4fda4e 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts @@ -28,6 +28,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = "1.8" } + testRuns["test"].executionTask.configure { + useJUnit() + } withJava() } js(LEGACY) { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle index b46c0d0c2c2..c48cae255ec 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle @@ -17,6 +17,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = '1.8' } + testRuns["test"].executionTask.configure { + useJUnit() + } } js(LEGACY) { browser { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle.kts index d40906149cb..ceba35c456e 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformLibrary/build.gradle.kts @@ -15,6 +15,9 @@ kotlin { compilations.all { kotlinOptions.jvmTarget = "1.8" } + testRuns["test"].executionTask.configure { + useJUnit() + } } js(LEGACY) { browser { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt index 9c5de69a713..b2aba5f1897 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt @@ -13,6 +13,7 @@ object Versions { val GRADLE = version("6.3") val KTOR: (kotlinVersion: Version) -> Version = { kotlinVersion -> version("1.3.2-$kotlinVersion") } val JUNIT = version("4.12") + val JUNIT5 = version("5.6.0") object ANDROID { val ANDROID_MATERIAL = version("1.2.0") @@ -40,6 +41,11 @@ object Versions { object GRADLE_PLUGINS { val ANDROID = version("4.0.1") } + + object MAVEN_PLUGINS { + val SUREFIRE = version("2.22.2") + val FAILSAFE = SUREFIRE + } } private fun version(version: String) = Version.fromString(version) \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/DependencyIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/DependencyIR.kt index 872caa0fe81..4a3bebb030e 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/DependencyIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/DependencyIR.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModulePath import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version +import java.util.* interface DependencyIR : BuildSystemIR { val dependencyType: DependencyType @@ -26,7 +27,7 @@ data class ModuleDependencyIR( override fun withDependencyType(type: DependencyType): DependencyIR = copy(dependencyType = type) override fun BuildFilePrinter.render() = when (this) { - is GradlePrinter -> call(dependencyType.gradleName) { + is GradlePrinter -> call(dependencyType.getGradleName()) { call("project", forceBrackets = true) { +path.parts.joinToString(separator = "") { ":$it" }.quotified } @@ -63,22 +64,22 @@ fun SourcesetType.toDependencyType() = when (this) { SourcesetType.test -> DependencyType.TEST } -val DependencyType.gradleName - get() = when (this) { - DependencyType.MAIN -> "implementation" - DependencyType.TEST -> "testImplementation" - } +fun DependencyType.getGradleName(type: String = "implementation") = when (this) { + DependencyType.MAIN -> type + DependencyType.TEST -> "test${type.capitalize(Locale.US)}" +} data class ArtifactBasedLibraryDependencyIR( override val artifact: LibraryArtifact, override val version: Version, - override val dependencyType: DependencyType + override val dependencyType: DependencyType, + val dependencyKind: String = "implementation" ) : LibraryDependencyIR { override fun withDependencyType(type: DependencyType): ArtifactBasedLibraryDependencyIR = copy(dependencyType = type) override fun BuildFilePrinter.render() = when (this) { - is GradlePrinter -> call(dependencyType.gradleName) { + is GradlePrinter -> call(dependencyType.getGradleName(dependencyKind)) { with(artifact) { when (this) { is MavenArtifact -> +"$groupId:$artifactId:${version}".quotified @@ -125,7 +126,7 @@ abstract class KotlinLibraryDependencyIR( override fun BuildFilePrinter.render() { when (this) { - is GradlePrinter -> call(dependencyType.gradleName) { + is GradlePrinter -> call(dependencyType.getGradleName()) { if (GradlePrinter.GradleDsl.KOTLIN == dsl || isInMppModule) { +"kotlin(" +artifactName.quotified diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIRBuilder.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIRBuilder.kt index cb9d2b8bde8..0c176f701f8 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIRBuilder.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIRBuilder.kt @@ -42,6 +42,8 @@ class GradleIRListBuilder private constructor() : GradleIRBuilderBase { operator fun String.unaryPlus() = RawGradleIR { +this@unaryPlus }.also(irs::add) operator fun BuildSystemIR.unaryPlus() = also(irs::add) + operator fun Collection.unaryPlus() = also(irs::addAll) + fun addRaw(raw: GradlePrinter.() -> Unit) = RawGradleIR(raw).also(irs::add) fun addRaw(@NonNls raw: String) = RawGradleIR { +raw }.also(irs::add) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt index 5e81fa18596..eab9b73f266 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt @@ -7,10 +7,12 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemPluginIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryWrapper import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository +import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version interface MavenIR : BuildSystemIR { fun MavenPrinter.renderMaven() @@ -31,6 +33,18 @@ data class PluginRepositoryMavenIR( } } +data class MavenOnlyPluginIR( + val artifactId: String, + val version: Version, +) : MavenIR, BuildSystemPluginIR { + override fun MavenPrinter.renderMaven() { + node("plugin") { + singleLineNode("artifactId") { +artifactId } + singleLineNode("version") { +version.text } + } + } +} + data class MavenPropertyIR( @NonNls val name: String, @NonNls val value: String diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt index 49087aaf4d1..3e2b8e7ef8c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt @@ -196,6 +196,11 @@ object AndroidTargetConfigurator : TargetConfigurator, ) } + override fun createBuildFileIRs(reader: Reader, configurationData: ModulesToIrConversionData, module: Module): List = + buildList { + +super.createBuildFileIRs(reader, configurationData, module) + +super.createBuildFileIRs(reader, configurationData, module) + } val androidPlugin by enumSetting( KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin"), diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt index 1d3401fd868..50a39ec8672 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt @@ -7,20 +7,22 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle +import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSettingReference import org.jetbrains.kotlin.tools.projectWizard.core.safeAs -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinArbitraryDependencyIR +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.MavenOnlyPluginIR +import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase -import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType -import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.buildSystemType +import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.* import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind @@ -54,59 +56,99 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings { reader: Reader, configurationData: ModulesToIrConversionData, module: Module - ): List = - inContextOfModuleConfigurator(module) { - reader { - testFramework.reference.settingValue.dependencyNames.map { dependencyName -> - KotlinArbitraryDependencyIR( - dependencyName, - isInMppModule = module.kind - .let { it == ModuleKind.multiplatform || it == ModuleKind.target }, - kotlinVersion = KotlinPlugin.version.propertyValue, - dependencyType = DependencyType.TEST - ) + ): List = irsList { + val testFramework = inContextOfModuleConfigurator(module) { reader { testFramework.reference.settingValue } } + + testFramework.dependencyNames.forEach { dependencyName -> + +KotlinArbitraryDependencyIR( + dependencyName, + isInMppModule = module.kind + .let { it == ModuleKind.multiplatform || it == ModuleKind.target }, + kotlinVersion = reader { KotlinPlugin.version.propertyValue }, + dependencyType = DependencyType.TEST + ) + } + testFramework.additionalDependencies.forEach { +it } + } + + override fun createBuildFileIRs(reader: Reader, configurationData: ModulesToIrConversionData, module: Module) = irsList { + val testFramework = inContextOfModuleConfigurator(module) { reader { testFramework.reference.settingValue } } + val buildSystemType = reader { buildSystemType } + if (testFramework != KotlinTestFramework.NONE) { + when { + module.kind.isSingleplatform && buildSystemType.isGradle -> { + testFramework.usePlatform?.let { usePlatform -> + val testTaskAccess = if (buildSystemType == BuildSystemType.GradleKotlinDsl) "tasks.test" else "test" + testTaskAccess { + +"$usePlatform()" + } + } + } + buildSystemType == BuildSystemType.Maven -> { + +MavenOnlyPluginIR("maven-surefire-plugin", Versions.MAVEN_PLUGINS.SUREFIRE) + +MavenOnlyPluginIR("maven-failsafe-plugin", Versions.MAVEN_PLUGINS.FAILSAFE) } } } - + } override fun getConfiguratorSettings(): List> = listOf(testFramework) } - enum class KotlinTestFramework( override val text: String, val moduleTypes: List, - val dependencyNames: List + val usePlatform: String?, + val dependencyNames: List, + val additionalDependencies: List = emptyList() ) : DisplayableSettingItem { NONE( KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.none"), ModuleType.ALL.toList(), + usePlatform = null, emptyList() ), JUNIT4( KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.junit4"), listOf(ModuleType.jvm, ModuleType.android), + usePlatform = "useJUnit", listOf("test-junit") ), JUNIT5( KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.junit5"), listOf(ModuleType.jvm), - listOf("test-junit5") + usePlatform = "useJUnitPlatform", + dependencyNames = listOf("test-junit5"), + additionalDependencies = listOf( + ArtifactBasedLibraryDependencyIR( + MavenArtifact(DefaultRepository.MAVEN_CENTRAL, "org.junit.jupiter", "junit-jupiter-api"), + version = Versions.JUNIT5, + dependencyType = DependencyType.TEST, + ), + ArtifactBasedLibraryDependencyIR( + MavenArtifact(DefaultRepository.MAVEN_CENTRAL, "org.junit.jupiter", "junit-jupiter-engine"), + version = Versions.JUNIT5, + dependencyType = DependencyType.TEST, + dependencyKind = "runtimeOnly" + ), + ) ), TEST_NG( KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.test.ng"), listOf(ModuleType.jvm), + usePlatform = "useTestNG", listOf("test-testng") ), JS( KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.js"), listOf(ModuleType.js), + usePlatform = null, listOf("test-js") ), COMMON( KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.common"), listOf(ModuleType.common), + usePlatform = null, listOf("test-common", "test-annotations-common") ) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index f4e6d57d56f..10b14a1efcd 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -29,13 +29,17 @@ class RealNativeTargetConfigurator private constructor( override val isIosTarget: Boolean get() = moduleSubType.isIOS - override fun createInnerTargetIrs(reader: Reader, module: Module): List = if (moduleSubType.isIOS) irsList { - "binaries" { - "framework" { - "baseName" assign const(module.parent!!.name) + override fun createInnerTargetIrs(reader: Reader, module: Module): List = irsList { + +super.createInnerTargetIrs(reader, module) + if (moduleSubType.isIOS) { + "binaries" { + "framework" { + "baseName" assign const(module.parent!!.name) + } } } - } else emptyList() + } + companion object { val configurators = ModuleSubType.values() diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt index a893083570c..387c78987a1 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.buildSystemType import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType +import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind @@ -162,6 +163,7 @@ object JvmTargetConfigurator : JvmModuleConfigurator, reader: Reader, module: Module ): List = irsList { + +super.createInnerTargetIrs(reader, module) reader { inContextOfModuleConfigurator(module) { val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value @@ -175,6 +177,14 @@ object JvmTargetConfigurator : JvmModuleConfigurator, "withJava"() } } + val testFramework = inContextOfModuleConfigurator(module) { ModuleConfiguratorWithTests.testFramework.reference.settingValue } + if (testFramework != KotlinTestFramework.NONE) { + testFramework.usePlatform?.let { usePlatform -> + "testRuns[\"test\"].executionTask.configure" { + +"$usePlatform()" + } + } + } } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt index 2edc7ff975a..afb68eb94ee 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt @@ -90,6 +90,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator, module: Module ): List = buildList { + +super.createBuildFileIRs(reader, configurationData, module) if (configurationData.buildSystemType == BuildSystemType.GradleKotlinDsl) { +GradleImportIR("org.jetbrains.kotlin.gradle.tasks.KotlinCompile") } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt index 37a109adc8a..c0622425642 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt @@ -17,19 +17,20 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import org.jetbrains.kotlin.tools.projectWizard.templates.Template @Suppress("EnumEntryName") -enum class ModuleKind : DisplayableSettingItem { - multiplatform, - target, - singleplatformJvm, - singleplatformAndroid, - singleplatformJsBrowser, - singleplatformJsNode, +enum class ModuleKind(val isSingleplatform: Boolean) : DisplayableSettingItem { + multiplatform(isSingleplatform = false), + target(isSingleplatform = false), + singleplatformJvm(isSingleplatform = true), + singleplatformAndroid(isSingleplatform = true), + singleplatformJsBrowser(isSingleplatform = true), + singleplatformJsNode(isSingleplatform = true), ; override val text: String get() = name } + // TODO separate to classes class Module( @NonNls var name: String,