From 686ee4bde60350e3b88d6683c5f089e5a2b4ab05 Mon Sep 17 00:00:00 2001 From: sksamuel Date: Mon, 27 May 2024 10:24:44 -0500 Subject: [PATCH 1/4] allow nested --- build.gradle.kts | 18 ++-------- gradle/libs.versions.toml | 6 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 6 ++++ .../io/kotest/examples/js/PropertyTests.kt | 23 ------------ .../kotlin/io/kotest/examples/js/SsnTest.kt | 24 ++++++++++--- .../kotlin/io/kotest/examples/js/datatest.kt | 35 ------------------- 7 files changed, 31 insertions(+), 83 deletions(-) create mode 100644 settings.gradle.kts delete mode 100644 src/jsTest/kotlin/io/kotest/examples/js/PropertyTests.kt delete mode 100644 src/jsTest/kotlin/io/kotest/examples/js/datatest.kt diff --git a/build.gradle.kts b/build.gradle.kts index b64fff7..615cc0d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,6 @@ -buildscript { - repositories { - mavenCentral() - mavenLocal() - maven("https://oss.sonatype.org/content/repositories/snapshots") - } -} - -@Suppress("DSL_SCOPE_VIOLATION") plugins { alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.kotest.multiplatform) } repositories { @@ -20,11 +12,7 @@ repositories { kotlin { targets { js(IR) { - browser { - testTask { - useMocha() - } - } + browser() binaries.executable() } } @@ -38,8 +26,6 @@ kotlin { dependencies { implementation(libs.kotest.assertions.core) implementation(libs.kotest.framework.engine) - implementation(libs.kotest.framework.datatest) - implementation(libs.kotest.property) } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fbe5e4c..102a33e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,11 @@ [versions] -kotlin = "1.9.10" -kotest = "5.7.2" +kotlin = "1.9.22" +kotest = "5.10.0-LOCAL" ktor = "2.3.4" [libraries] kotest-assertions-core = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } kotest-framework-engine = { module = "io.kotest:kotest-framework-engine", version.ref = "kotest" } -kotest-framework-datatest = { module = "io.kotest:kotest-framework-datatest", version.ref = "kotest" } -kotest-property = { module = "io.kotest:kotest-property", version.ref = "kotest" } ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ac72c34..b82aa23 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..ceebae1 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,6 @@ +pluginManagement { + repositories { + gradlePluginPortal() + mavenLocal() + } +} diff --git a/src/jsTest/kotlin/io/kotest/examples/js/PropertyTests.kt b/src/jsTest/kotlin/io/kotest/examples/js/PropertyTests.kt deleted file mode 100644 index 20b879a..0000000 --- a/src/jsTest/kotlin/io/kotest/examples/js/PropertyTests.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.kotest.examples.js - -import io.kotest.core.spec.style.FunSpec -import io.kotest.matchers.shouldBe -import io.kotest.property.Exhaustive -import io.kotest.property.checkAll -import io.kotest.property.exhaustive.ints - -class PropertyTests : FunSpec({ - test("addition should be commutative") { - checkAll { a, b, c -> - a + b + c shouldBe c + b + a - } - } - - test("addition should be associative") { - checkAll { a, b -> - checkAll(Exhaustive.ints(1..100)) { c -> - (a + b) + c shouldBe a + (b + c) - } - } - } -}) diff --git a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt index 77c4ed6..0ec8c5c 100644 --- a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt +++ b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt @@ -1,15 +1,31 @@ package io.kotest.examples.js import io.kotest.core.spec.style.FunSpec +import io.kotest.engine.TestEngineLauncher +import io.kotest.engine.listener.TeamCityTestEngineListener import io.kotest.matchers.shouldBe +import kotlinx.coroutines.delay import validateSocial +//fun executeTests() { +// TestEngineLauncher() +// .withSpecs( +// SsnTest(), +// DogTest() +// ).withJs() +// .withListener(TeamCityTestEngineListener()) +// .promise() +//} + class SsnTest : FunSpec({ - test("a SSN should be invalid when it contains a zero in any position") { - validateSocial("543-23-5013") shouldBe false - validateSocial("043-23-5313") shouldBe false - validateSocial("313-03-5310") shouldBe false + context("js now allows nested tests") { + delay(3000) // look ma, I can use coroutines here ! + test("a SSN should be invalid when it contains a zero in any position") { + validateSocial("543-23-5013") shouldBe false + validateSocial("043-23-5313") shouldBe false + validateSocial("313-03-5310") shouldBe false + } } test("a SSN should be invalid when it starts with 666") { diff --git a/src/jsTest/kotlin/io/kotest/examples/js/datatest.kt b/src/jsTest/kotlin/io/kotest/examples/js/datatest.kt deleted file mode 100644 index 52add7e..0000000 --- a/src/jsTest/kotlin/io/kotest/examples/js/datatest.kt +++ /dev/null @@ -1,35 +0,0 @@ -package io.kotest.examples.js - -import io.kotest.core.Tuple2 -import io.kotest.core.spec.style.FunSpec -import io.kotest.datatest.withData -import io.kotest.matchers.shouldBe - -data class PythagTriple(val a: Int, val b: Int, val c: Int) - -class DataTest : FunSpec({ - - withData( - PythagTriple(8, 15, 17), - PythagTriple(9, 12, 15), - PythagTriple(15, 20, 25), - ) { (a, b, c) -> - a * a + b * b shouldBe c * c - } - - test(PythagTriple(8, 15, 17).toString()) { - - } - - test("foo\\.json") { - - } - - withData( - nameFn = { it.a }, - Tuple2("a.json", "b"), - Tuple2("b.json", "c"), - ) { (a, b) -> - println(a) - } -}) From cf37d0d776a1b7366410cf2fecedadc0c4880dac Mon Sep 17 00:00:00 2001 From: sksamuel Date: Mon, 27 May 2024 15:24:37 -0500 Subject: [PATCH 2/4] k2 --- build.gradle.kts | 9 +++------ gradle/libs.versions.toml | 2 +- .../kotlin/io/kotest/examples/js/SsnTest.kt | 15 ++------------- src/jsTest/kotlin/io/kotest/js/config.kt | 3 +++ 4 files changed, 9 insertions(+), 20 deletions(-) create mode 100644 src/jsTest/kotlin/io/kotest/js/config.kt diff --git a/build.gradle.kts b/build.gradle.kts index 615cc0d..97acc1b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,16 +10,13 @@ repositories { } kotlin { - targets { - js(IR) { - browser() - binaries.executable() - } + js(IR) { + nodejs() } sourceSets { val jsMain by getting { dependencies { - implementation(libs.ktor.client.js) + implementation(libs.ktor.client.js) } } val jsTest by getting { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 102a33e..6134f17 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlin = "1.9.22" +kotlin = "2.0.0" kotest = "5.10.0-LOCAL" ktor = "2.3.4" diff --git a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt index 0ec8c5c..ab0d7c7 100644 --- a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt +++ b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt @@ -1,27 +1,16 @@ package io.kotest.examples.js import io.kotest.core.spec.style.FunSpec -import io.kotest.engine.TestEngineLauncher -import io.kotest.engine.listener.TeamCityTestEngineListener import io.kotest.matchers.shouldBe import kotlinx.coroutines.delay import validateSocial -//fun executeTests() { -// TestEngineLauncher() -// .withSpecs( -// SsnTest(), -// DogTest() -// ).withJs() -// .withListener(TeamCityTestEngineListener()) -// .promise() -//} - class SsnTest : FunSpec({ context("js now allows nested tests") { - delay(3000) // look ma, I can use coroutines here ! + delay(2000) // look ma, I can use coroutines here ! test("a SSN should be invalid when it contains a zero in any position") { + delay(2000) // look ma, I can use coroutines here too ! validateSocial("543-23-5013") shouldBe false validateSocial("043-23-5313") shouldBe false validateSocial("313-03-5310") shouldBe false diff --git a/src/jsTest/kotlin/io/kotest/js/config.kt b/src/jsTest/kotlin/io/kotest/js/config.kt new file mode 100644 index 0000000..4cc3739 --- /dev/null +++ b/src/jsTest/kotlin/io/kotest/js/config.kt @@ -0,0 +1,3 @@ +package io.kotest.js + +fun config() {} From f28161c63ae96a3b0ae977cc2e07735e1e8e9897 Mon Sep 17 00:00:00 2001 From: sksamuel Date: Mon, 27 May 2024 15:26:58 -0500 Subject: [PATCH 3/4] moar --- src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt index ab0d7c7..627876f 100644 --- a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt +++ b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt @@ -9,11 +9,14 @@ class SsnTest : FunSpec({ context("js now allows nested tests") { delay(2000) // look ma, I can use coroutines here ! - test("a SSN should be invalid when it contains a zero in any position") { - delay(2000) // look ma, I can use coroutines here too ! - validateSocial("543-23-5013") shouldBe false - validateSocial("043-23-5313") shouldBe false - validateSocial("313-03-5310") shouldBe false + context("give me another context!") { + delay(2000) // look ma, I can use coroutines here ! + test("a SSN should be invalid when it contains a zero in any position") { + delay(2000) // look ma, I can use coroutines here too ! + validateSocial("543-23-5013") shouldBe false + validateSocial("043-23-5313") shouldBe false + validateSocial("313-03-5310") shouldBe false + } } } From e474e7ea14a640b108733e890c673b766b8825f2 Mon Sep 17 00:00:00 2001 From: sksamuel Date: Mon, 27 May 2024 19:07:17 -0500 Subject: [PATCH 4/4] test filter --- src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt index 627876f..a06400e 100644 --- a/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt +++ b/src/jsTest/kotlin/io/kotest/examples/js/SsnTest.kt @@ -8,11 +8,11 @@ import validateSocial class SsnTest : FunSpec({ context("js now allows nested tests") { - delay(2000) // look ma, I can use coroutines here ! + delay(1000) // look ma, I can use coroutines here ! context("give me another context!") { - delay(2000) // look ma, I can use coroutines here ! + delay(1000) // look ma, I can use coroutines here ! test("a SSN should be invalid when it contains a zero in any position") { - delay(2000) // look ma, I can use coroutines here too ! + delay(1000) // look ma, I can use coroutines here too ! validateSocial("543-23-5013") shouldBe false validateSocial("043-23-5313") shouldBe false validateSocial("313-03-5310") shouldBe false