I'm using Idea Ultimate 2021.3.2 and running a nat...
# intellij
s
I'm using Idea Ultimate 2021.3.2 and running a native unit test, and for some reason the gradle task macosX64Test is showing no stdout stuff from the unit test, just gradle-level messages. Strings from a println() are just not displayed at all, and text from an assertEquals failing is also not shown. Run window just indicates the test either failed or succeeded, making the unit test not very useful :-). Anyone else having trouble seeing stdout in the Run window during native unit tests?
a
Looks like https://youtrack.jetbrains.com/issue/KTIJ-20147. Please make sure you’re using the latest stable Kotlin plugin 1.6.10, I think it should be fixed.
s
Yeah, that issue is what's happening. Kotlin plugin is 213-1.6.10-release-944-IJ6461.79 which I think is current. So it doesn't look fixed, maybe something regressed this? Anyway I tried adding this snippet based on an SO Post I found:
Copy code
tasks.withType<Test> {
    testLogging {
        events("PASSED", "FAILED", "SKIPPED")
        exceptionFormat = TestExceptionFormat.FULL
        showStandardStreams = true
        showStackTraces = true
    }
} But it didn't help, still the same. Think I should file a youtrack issue referencing the above one?
Forgot to mention, running gradle task macosX64Test shows everything, so am using that as a work-around. I added a comment to the above issue, dunno if that's the 'right' thing to do but hope it helps...
Ok, even gradle running a test can have an issue. Anyone seen this? I ran a macosX64 unit test and set an kotlin.test.assertEquals with an invalid expected value. Instead of the normal error message, I get this:
Copy code
* What went wrong:
Execution failed for task ':KmpIO:macosX64Test'.
> Test running process exited unexpectedly.
  Current test: textUtf8Basics
  Process output:
* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':KmpIO:macosX64Test'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:145)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:143)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: java.lang.Error: Test running process exited unexpectedly.
Current test: textUtf8Basics
Process output:

	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClient.ensureNodesClosed(TCServiceMessagesClient.kt:537)
	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClient.ensureNodesClosed$default(TCServiceMessagesClient.kt:514)
	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor$execute$1.invoke(TCServiceMessagesTestExecutor.kt:114)
	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor$execute$1.invoke(TCServiceMessagesTestExecutor.kt:46)
	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec.wrapExecute$kotlin_gradle_plugin(TCServiceMessagesTestExecutor.kt:28)
	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor.execute(TCServiceMessagesTestExecutor.kt:46)
	at org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor.execute(TCServiceMessagesTestExecutor.kt:34) <119 internal lines>
Anyone seen this? Seems like some error inside Jetbrains TCServiceMessagesClient. This only happens if the assertion failure is an uncaught exception in the unit test. If I wrap the code inside the @Test function with a try-catch block, it catches the regular assertEquals exception for the bad actual, and the test succeeds.