https://kotlinlang.org logo
#kotest
Title
# kotest
c

christophsturm

05/18/2021, 11:42 AM
the docs for stringspec state that it does not support nested tests. is that still true?. https://github.com/kotest/kotest/blob/master/doc/styles.md#string-spec
d

dave08

05/18/2021, 12:32 PM
It seems that stringspec with nesting is the whole point of freespec
s

sam

05/18/2021, 12:33 PM
Correct
c

christophsturm

05/18/2021, 12:45 PM
in a new project i took over that has a kotest test suite, they use nested string specs that look like this:
Copy code
class FetcherSpec : StringSpec() {
    init {
        "a public key fetcher" should {

            "return the public key ..." {
...
and it seems to work.
but I’m not really sure if its really always doing the right thing
it seems that thats WordSpec syntax. but it also works with StringSpec
s

sam

05/18/2021, 1:04 PM
Yeah that is odd.
Aren't you just going to migrate it to failfast 🙂
c

christophsturm

05/18/2021, 1:17 PM
not on my second day 🙂
s

sam

05/18/2021, 1:18 PM
oh new job 🙂
yeah wait until 3rd day at least 😉
c

christophsturm

05/18/2021, 1:20 PM
but i had an idea for a failfast feature already. something like git bisect, but it runs all combinations of tests simultanously to show you which ones share state.
👍🏻 1
btw, what is
Copy code
@ExperimentalKotest
   open val concurrentSpecs: Int? = null

   @ExperimentalKotest
   open val concurrentTests: Int? = null
s

sam

05/18/2021, 1:21 PM
It's the new in 4.4 concurrency support
but it's marked experimental while we garner feedback
c

christophsturm

05/18/2021, 1:22 PM
is it for running specs inside a class concurrently?
and is it documented anywhere?
s

sam

05/18/2021, 1:22 PM
yes and yes
c

christophsturm

05/18/2021, 1:23 PM
its the only two options in the config object that have no kdoc
Maybe this awesome feature is what gets you onto the kotest team 😂
c

christophsturm

05/18/2021, 1:25 PM
hmm that page mentions concurrencyMode. and that seems to be no longer present in AbstractProjectConfig
s

sam

05/18/2021, 1:26 PM
those docs are hidden and probably slightly out of date
basically concurrentSpecs / concurrentTests set how many specs/tests should be launched at the same time
c

christophsturm

05/18/2021, 1:26 PM
ok and concurrencyMode is gone?
s

sam

05/18/2021, 1:26 PM
so if you set it to 4 / 2, you'd get 4 specs launched and inside each spec 2 tests would be launched concurrently
yea
c

christophsturm

05/18/2021, 1:27 PM
ah ok
s

sam

05/18/2021, 1:27 PM
concurrencyMode was never released
c

christophsturm

05/18/2021, 1:27 PM
for me it was a bit confusing because for me spec is a synonym for test
s

sam

05/18/2021, 1:27 PM
It was around in a snapshot while I worked on this concurrency stuff but settled on the two flags
c

christophsturm

05/18/2021, 1:27 PM
so spec = context in that context
s

sam

05/18/2021, 1:27 PM
spec = class file
everything inside a spec is a test
c

christophsturm

05/18/2021, 1:27 PM
cool
so if i set both to MaxInt i get unlimited concurrency?
s

sam

05/18/2021, 1:28 PM
yep, and we have a constant for that, MaxConcurrency
now of course, increasing those doesn't mean parallel
you also need to increase the threads
because threads is orthogonal to concurrent dispatching of coroutines
c

christophsturm

05/18/2021, 1:30 PM
override val parallelism = 8
?
s

sam

05/18/2021, 1:30 PM
yep you an do that
you can even provide your own spec launcher, which creates the coroutines
remember these are all marked with @ExperimentalKotest for a reason 🙂
c

christophsturm

05/18/2021, 1:35 PM
ok
any known problems?
s

sam

05/18/2021, 1:39 PM
not so far
c

christophsturm

05/18/2021, 1:42 PM
do i also have to set the “Allow parallel run” checkbox in the run config, or do the settings override that?
s

sam

05/18/2021, 1:44 PM
that just means allowing you to run more than one "run" at teh same time, and is nothing to do with kotest
c

christophsturm

05/18/2021, 1:54 PM
thanks, that setting has been confusing me for quite some time
7 Views