kotest / kotest-intellij-plugin

The official Kotest plugin for Intellij and Android Studio
Apache License 2.0
173 stars 19 forks source link

`DescribeSpec` test with `InstancePerLeaf` isolation mode appears running forever #79

Closed lwasyl closed 4 years ago

lwasyl commented 4 years ago

This is what I see after running the test class: image

The tests appear to have completed successfully, and the infinite spinner seems to be just visual bug.

Sample test:

Repro code ```kotlin package com.example import io.kotest.core.spec.IsolationMode import io.kotest.core.spec.style.DescribeSpec class TestTest : DescribeSpec() { init { describe("test") { println("Starting") describe("First describe") { println("first describe") it("should do something") { println("assertion") } it("should do something else") { println("second assertion") } } describe("Second describe") { println("second describe") it("should do something") { println("assertion") } it("should do something else") { println("second assertion") } } } } override fun isolationMode(): IsolationMode? = IsolationMode.InstancePerLeaf } ```
debug output ``` invokeBeforeProject ~~~ Kotest Configuration ~~~ -> Parallelism: 1 thread(s) -> Default test timeout: 600000ms -> Default test order: Sequential -> Default isolation mode: InstancePerLeaf -> Global soft assertations: False -> Write spec failure file: False -> Fail on ignored tests: False -> Spec execution order: LexicographicSpecExecutionOrder -> Extensions - io.kotest.core.extensions.SystemPropertyTagExtension - io.kotest.core.extensions.RuntimeTagExtension - io.kotest.core.extensions.IgnoredSpecDiscoveryExtension - io.kotest.core.extensions.TagFilteredDiscoveryExtension -> Listeners - com.example.test.utils.TestCoroutineDispatcherListener - beforeAfterAllListener$1 Submitting 1 specs Waiting for specs execution to terminate Executing spec class com.example.TestTest Executing engine listener callback:specStarted class com.example.TestTest Notifying 1 test listeners of callback 'prepareSpec' 'prepareSpec' callbacks complete Executing engine listener callback:specInstantiated spec:com.example.TestTest@4a051356 Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@4a051356, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] Waiting for test case execution to terminate invokeBeforeSpec com.example.TestTest@768ecd44 Created new spec instance com.example.TestTest@768ecd44 Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] Starting root test Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)) in search of Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)) Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms Starting Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- First describe is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=First describe, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=12, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=First describe, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=12, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms first describe Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- First describe -- should do something is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=First describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=15, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=First describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something, focus=false, bang=false)), spec=com.example.TestTest@768ecd44, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=15, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms assertion Test completed with result TestResult(status=Success, error=null, reason=null, duration=11.2ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=17.8ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=50.9ms) invokeAfterSpec com.example.TestTest@768ecd44 invokeBeforeSpec com.example.TestTest@7a88d6c5 Created new spec instance com.example.TestTest@7a88d6c5 Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] Starting root test Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)) in search of Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=First describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something else, focus=false, bang=false)) Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms Starting Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- First describe is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=First describe, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=12, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=First describe, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=12, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms first describe Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- First describe -- should do something else is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=First describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something else, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=19, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=First describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something else, focus=false, bang=false)), spec=com.example.TestTest@7a88d6c5, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=19, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms second assertion Test completed with result TestResult(status=Success, error=null, reason=null, duration=3.15ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=7.00ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=10.7ms) invokeAfterSpec com.example.TestTest@7a88d6c5 invokeBeforeSpec com.example.TestTest@46dcd8a8 Created new spec instance com.example.TestTest@46dcd8a8 Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] Starting root test Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)) in search of Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)) Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms Starting Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- Second describe is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=24, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=24, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms second describe Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- Second describe -- should do something is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=27, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something, focus=false, bang=false)), spec=com.example.TestTest@46dcd8a8, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=27, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms assertion Test completed with result TestResult(status=Success, error=null, reason=null, duration=3.06ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=7.39ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=10.8ms) invokeAfterSpec com.example.TestTest@46dcd8a8 invokeBeforeSpec com.example.TestTest@6284009d Created new spec instance com.example.TestTest@6284009d Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] Starting root test Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)) in search of Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something else, focus=false, bang=false)) Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms Starting Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- Second describe is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=24, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false)], name=TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=24, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms second describe Materialized roots: [RootTest(testCase=TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false)], name=TestName(prefix=Describe: , name=test, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=9, fileName=TestTest.kt), type=Container, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null), order=0)] com.example.TestTest -- test -- Second describe -- should do something else is active Executing active test TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something else, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=31, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) invokeTestCase TestCase(description=Description(parents=[TestName(prefix=null, name=com.example.TestTest, focus=false, bang=false), TestName(prefix=Describe: , name=test, focus=false, bang=false), TestName(prefix=Describe: , name=Second describe, focus=false, bang=false)], name=TestName(prefix=null, name=should do something else, focus=false, bang=false)), spec=com.example.TestTest@6284009d, test=io.kotest.core.test.TestContext.() -> kotlin.Unit, source=SourceRef(lineNumber=31, fileName=TestTest.kt), type=Test, config=TestCaseConfig(enabled=true, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], listeners=[], extensions=[], enabledIf=(io.kotest.core.test.TestCase) -> kotlin.Boolean), factoryId=null, assertionMode=null) Test will execute with timeout 600s Test will execute with invocationTimeout 600s Scheduler will interrupt this execution in 600sms second assertion Test completed with result TestResult(status=Success, error=null, reason=null, duration=2.89ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=6.03ms) Test completed with result TestResult(status=Success, error=null, reason=null, duration=9.27ms) invokeAfterSpec com.example.TestTest@6284009d Executing notifyFinalizeSpec Executing engine listener callback:specFinished class com.example.TestTest Spec executor has terminated invokeAfterProject Process finished with exit code 0 ```

This seems to not be an issue with other isolation modes

Kotest 4.1.1, IJ plugin 1.0.5, AS 4.2 Canary 4

sksamuel commented 4 years ago

Fixed in 4.1.2