the docs for stringspec state that it does not sup...
# kotest
c
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
It seems that stringspec with nesting is the whole point of freespec
s
Correct
c
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
Yeah that is odd.
Aren't you just going to migrate it to failfast 🙂
c
not on my second day 🙂
s
oh new job 🙂
yeah wait until 3rd day at least 😉
c
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
It's the new in 4.4 concurrency support
but it's marked experimental while we garner feedback
c
is it for running specs inside a class concurrently?
and is it documented anywhere?
s
yes and yes
c
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
hmm that page mentions concurrencyMode. and that seems to be no longer present in AbstractProjectConfig
s
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
ok and concurrencyMode is gone?
s
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
ah ok
s
concurrencyMode was never released
c
for me it was a bit confusing because for me spec is a synonym for test
s
It was around in a snapshot while I worked on this concurrency stuff but settled on the two flags
c
so spec = context in that context
s
spec = class file
everything inside a spec is a test
c
cool
so if i set both to MaxInt i get unlimited concurrency?
s
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
override val parallelism = 8
?
s
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
ok
any known problems?
s
not so far
c
do i also have to set the “Allow parallel run” checkbox in the run config, or do the settings override that?
s
that just means allowing you to run more than one "run" at teh same time, and is nothing to do with kotest
c
thanks, that setting has been confusing me for quite some time