Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to skip printing skipped tests #516

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

rynoV
Copy link
Contributor

@rynoV rynoV commented Jan 6, 2025

Resolves #453

Separated out from #511

@farlee2121
Copy link
Collaborator

Hmm. It feels like something the existing Printer argument should be able to handle.

Something like this

let skipPrinter = 
  {
    TestPrinters.defaultPrinter with 
      beforeEach = (fun (test) -> 
        match test.shouldSkipEvaluation with
        | None -> TestPrinters.beforeEach test
        | Some -> ())
  }

runTestsWithCLIArgs [CLIArguments.Printer skipPrinter] argv tests

beforeEach currently only takes the test's name, but we could pass more to the printer.

@rynoV
Copy link
Contributor Author

rynoV commented Jan 7, 2025

That works. One thing about changing the printer is it seems to break the visual studio adapter, for example when I run in Jetbrains Rider I get an exception from I believe reflection failing:

Exception

Test has not run

Last runner error: Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'., reason: System.MissingMethodException: Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'. at YoloDev.Expecto.TestSdk.Execution.PrinterAdapter.create(FSharpMap`2 cases, IFrameworkHandle frameworkHandle) at YoloDev.Expecto.TestSdk.Execution.Execution.runMatchingTests(Logger logger, RunSettings settings, ExpectoTest test, FSharpList`1 cases, IFrameworkHandle frameworkHandle) at YoloDev.Expecto.TestSdk.Execution.Execution.runSpecifiedTests@205-1.Invoke(Tuple`2 _arg1) at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 --- End of stack trace from previous location --- at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 at Microsoft.FSharp.Control.AsyncPrimitives.RunImmediate[a](CancellationToken cancellationToken, FSharpAsync`1 computation) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1159 at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1165 at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 at YoloDev.Expecto.TestSdk.VsTestAdapter.Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter.ITestExecutor.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle) at Microsoft.VisualStudio.TestPlatform.Common.ExtensionDecorators.SerialTestRunDecorator.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle) in /_/src/Microsoft.TestPlatform.Common/ExtensionDecorators/SerialTestRunDecorator.cs:line 44 at JetBrains.ReSharper.TestRunner.Adapters.VsTest.Executor.RunAll(TestRunRequest request) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\Executor.cs:line 55 at JetBrains.ReSharper.TestRunner.Adapters.VsTest.VsTestRunner.RunTests(TestRunRequest request, ITestDiscoverySink discoverySink, ITestExecutionSink executionSink) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\VsTestRunner.cs:line 51 at JetBrains.ReSharper.TestRunner.Implementation.UnitTestRemoteAgent.Execute(TestRunRequest request) at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.<>c__DisplayClass4_1.<TryRegisterHandler>b__1() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.RunAndLog(Func`2 handler, IAutoRegisterInProtocol message)

--- EXCEPTION #1/2 [RdFault]
Message = “
  Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'., reason: System.MissingMethodException: Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'.
     at YoloDev.Expecto.TestSdk.Execution.PrinterAdapter.create(FSharpMap`2 cases, IFrameworkHandle frameworkHandle)
     at YoloDev.Expecto.TestSdk.Execution.Execution.runMatchingTests(Logger logger, RunSettings settings, ExpectoTest test, FSharpList`1 cases, IFrameworkHandle frameworkHandle)
     at YoloDev.Expecto.TestSdk.Execution.Execution.runSpecifiedTests@205-1.Invoke(Tuple`2 _arg1)
     at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
     at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
  --- End of stack trace from previous location ---
     at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454
     at Microsoft.FSharp.Control.AsyncPrimitives.RunImmediate[a](CancellationToken cancellationToken, FSharpAsync`1 computation) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1159
     at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1165
     at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515
     at YoloDev.Expecto.TestSdk.VsTestAdapter.Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter.ITestExecutor.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle)
     at Microsoft.VisualStudio.TestPlatform.Common.ExtensionDecorators.SerialTestRunDecorator.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle) in /_/src/Microsoft.TestPlatform.Common/ExtensionDecorators/SerialTestRunDecorator.cs:line 44
     at JetBrains.ReSharper.TestRunner.Adapters.VsTest.Executor.RunAll(TestRunRequest request) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\Executor.cs:line 55
     at JetBrains.ReSharper.TestRunner.Adapters.VsTest.VsTestRunner.RunTests(TestRunRequest request, ITestDiscoverySink discoverySink, ITestExecutionSink executionSink) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\VsTestRunner.cs:line 51
     at JetBrains.ReSharper.TestRunner.Implementation.UnitTestRemoteAgent.Execute(TestRunRequest request)
     at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.<>c__DisplayClass4_1.<TryRegisterHandler>b__1()
     at System.Threading.Tasks.Task`1.InnerInvoke()
     at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
  --- End of stack trace from previous location ---
     at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
     at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
  --- End of stack trace from previous location ---
     at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.RunAndLog(Func`2 handler, IAutoRegisterInProtocol message)
”
ReasonTypeFqn = System.MissingMethodException
ReasonText = “
  System.MissingMethodException: Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'.
     at YoloDev.Expecto.TestSdk.Execution.PrinterAdapter.create(FSharpMap`2 cases, IFrameworkHandle frameworkHandle)
     at YoloDev.Expecto.TestSdk.Execution.Execution.runMatchingTests(Logger logger, RunSettings settings, ExpectoTest test, FSharpList`1 cases, IFrameworkHandle frameworkHandle)
     at YoloDev.Expecto.TestSdk.Execution.Execution.runSpecifiedTests@205-1.Invoke(Tuple`2 _arg1)
     at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
     at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
  --- End of stack trace from previous location ---
     at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454
     at Microsoft.FSharp.Control.AsyncPrimitives.RunImmediate[a](CancellationToken cancellationToken, FSharpAsync`1 computation) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1159
     at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1165
     at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515
     at YoloDev.Expecto.TestSdk.VsTestAdapter.Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter.ITestExecutor.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle)
     at Microsoft.VisualStudio.TestPlatform.Common.ExtensionDecorators.SerialTestRunDecorator.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle) in /_/src/Microsoft.TestPlatform.Common/ExtensionDecorators/SerialTestRunDecorator.cs:line 44
     at JetBrains.ReSharper.TestRunner.Adapters.VsTest.Executor.RunAll(TestRunRequest request) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\Executor.cs:line 55
     at JetBrains.ReSharper.TestRunner.Adapters.VsTest.VsTestRunner.RunTests(TestRunRequest request, ITestDiscoverySink discoverySink, ITestExecutionSink executionSink) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\VsTestRunner.cs:line 51
     at JetBrains.ReSharper.TestRunner.Implementation.UnitTestRemoteAgent.Execute(TestRunRequest request)
     at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.<>c__DisplayClass4_1.<TryRegisterHandler>b__1()
     at System.Threading.Tasks.Task`1.InnerInvoke()
     at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
  --- End of stack trace from previous location ---
     at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
     at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
  --- End of stack trace from previous location ---
     at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.RunAndLog(Func`2 handler, IAutoRegisterInProtocol message)
”
ReasonMessage = “Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'.”
StackTraceString = “
  at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.Activation.ServerMessageBroker.SendMessage(IMessage message) in SendMessage.il:line IL_0077 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.TestRunnerAgentManager.TestRunnerExecutionAgent.<RunTests>b__8_1()
     at JetBrains.ReSharper.UnitTestFramework.Common.Extensions.TaskExtensions.ThrowIf[TException](Task task, Task signallingTask, Func`1 exceptionFactory) in ThrowIf.il:line IL_0118 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Common.Extensions.TaskExtensions.CancelIf(Task task, CancellationToken ct, TaskCreationOptions options) in CancelIf.il:line IL_0126 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.TestRunnerAgentManager.TestRunnerExecutionAgent.RunTests(CancellationToken cancelCt, CancellationToken abortCt) in RunTests.il:line IL_00AE mvid 0C36 or RunTests.il:line IL_02D6 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.TestRunnerRunStrategy.Run(IUnitTestRun run) in Run.il:line IL_01C8 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Execution.Launch.UnitTestRun.StartCore(CancellationToken onCancel, CancellationToken onAbort) in StartCore.il:line IL_01E7 mvid 0C36 or StartCore.il:line IL_03B3 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Execution.Launch.UnitTestRun.<>c.<StartCore>b__37_0(ExceptionDispatchInfo e) in UnitTestRun.il:line IL_0000 mvid 0C36
     at JetBrains.Util.Special.GeneralUtil.WithNotNull[T](T item, Action`1 F) in WithNotNull.il:line IL_0016 mvid F190
     at JetBrains.ReSharper.UnitTestFramework.Execution.Launch.UnitTestRun.StartCore(CancellationToken onCancel, CancellationToken onAbort) in StartCore.il:line IL_01E7 mvid 0C36 or StartCore.il:line IL_03B3 mvid 0C36
     at JetBrains.ReSharper.UnitTestFramework.Execution.Launch.UnitTestRun.Start(CancellationToken onCancel, CancellationToken onAbort) in Start.il:line IL_0182 mvid 0C36
”
ExceptionPath = Root.InnerException
ClassName = JetBrains.Rd.Tasks.RdFault
HResult = COR_E_EXCEPTION=80131500
Source = System.Private.CoreLib
Data.ThreadLocalDebugInfo = “
  call `ServerSocket-<noname>.JetBrains.ReSharper.TestRunner.Abstractions.IClientEndpoint.System.Threading.Tasks.Task`1[JetBrains.ReSharper.TestRunner.Abstractions.Objects.IAutoRegisterInProtocol] SendMessage(JetBrains.ReSharper.TestRunner.Abstractions.Objects.IAutoRegisterInProtocol)_proxy` (2763052212960334136), taskId=1000006
   -> call `ServerSocket-<noname>.JetBrains.ReSharper.TestRunner.Abstractions.IClientEndpoint.System.Threading.Tasks.Task`1[JetBrains.ReSharper.TestRunner.Abstractions.Objects.IAutoRegisterInProtocol] SendMessage(JetBrains.ReSharper.TestRunner.Abstractions.Objects.IAutoRegisterInProtocol)_proxy` (2763052212960334136), taskId=1000006
”

--- Outer ---

--- EXCEPTION #2/2 [LoggerException]
Message = “
  Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'., reason: System.MissingMethodException: Method not found: 'Void TestPrinters..ctor(Microsoft.FSharp.Core.FSharpFunc`2<Expecto.Test,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,Microsoft.FSharp.Core.FSharpFunc`2<System.Exception,Microsoft.FSharp.Core.FSharpFunc`2<System.TimeSpan,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>>, Microsoft.FSharp.Core.FSharpFunc`2<ExpectoConfig,Microsoft.FSharp.Core.FSharpFunc`2<TestRunSummary,Microsoft.FSharp.Control.FSharpAsync`1<Microsoft.FSharp.Core.Unit>>>)'.
     at YoloDev.Expecto.TestSdk.Execution.PrinterAdapter.create(FSharpMap`2 cases, IFrameworkHandle frameworkHandle)
     at YoloDev.Expecto.TestSdk.Execution.Execution.runMatchingTests(Logger logger, RunSettings settings, ExpectoTest test, FSharpList`1 cases, IFrameworkHandle frameworkHandle)
     at YoloDev.Expecto.TestSdk.Execution.Execution.runSpecifiedTests@205-1.Invoke(Tuple`2 _arg1)
     at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
     at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
  --- End of stack trace from previous location ---
     at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454
     at Microsoft.FSharp.Control.AsyncPrimitives.RunImmediate[a](CancellationToken cancellationToken, FSharpAsync`1 computation) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1159
     at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1165
     at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515
     at YoloDev.Expecto.TestSdk.VsTestAdapter.Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter.ITestExecutor.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle)
     at Microsoft.VisualStudio.TestPlatform.Common.ExtensionDecorators.SerialTestRunDecorator.RunTests(IEnumerable`1 tests, IRunContext runContext, IFrameworkHandle frameworkHandle) in /_/src/Microsoft.TestPlatform.Common/ExtensionDecorators/SerialTestRunDecorator.cs:line 44
     at JetBrains.ReSharper.TestRunner.Adapters.VsTest.Executor.RunAll(TestRunRequest request) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\Executor.cs:line 55
     at JetBrains.ReSharper.TestRunner.Adapters.VsTest.VsTestRunner.RunTests(TestRunRequest request, ITestDiscoverySink discoverySink, ITestExecutionSink executionSink) in Z:\BuildAgent\work\1b668fe37ef92293\ReSharperTestRunner\src\Adapters\TestRunner.Adapters.VsTest\VsTestRunner.cs:line 51
     at JetBrains.ReSharper.TestRunner.Implementation.UnitTestRemoteAgent.Execute(TestRunRequest request)
     at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.<>c__DisplayClass4_1.<TryRegisterHandler>b__1()
     at System.Threading.Tasks.Task`1.InnerInvoke()
     at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
  --- End of stack trace from previous location ---
     at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
     at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
  --- End of stack trace from previous location ---
     at JetBrains.ReSharper.TestRunner.Implementation.ClientEndpoint.RunAndLog(Func`2 handler, IAutoRegisterInProtocol message)
”
InnerException = “Exception #1 at Root.InnerException”
StackTraceString = “
  at JetBrains.Util.ILoggerEx.LogException(ILogger logger, LoggingLevel level, Exception exception, ExceptionOrigin exceptionOrigin, String comment) in LogException.il:line IL_002E mvid F190
     at JetBrains.Util.ILoggerEx.Error(ILogger logger, Exception exception, ExceptionOrigin origin, String comment) in Error.il:line IL_0000 mvid F190
     at JetBrains.ReSharper.UnitTestFramework.Execution.Launch.UnitTestRun.Start(CancellationToken onCancel, CancellationToken onAbort) in Start.il:line IL_0182 mvid 0C36
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Execution.Launch.UnitTestRun.StartCore(CancellationToken onCancel, CancellationToken onAbort) in StartCore.il:line IL_03B3 mvid 0C36
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.TestRunnerRunStrategy.Run(IUnitTestRun run) in Run.il:line IL_01C8 mvid 0C36
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.TestRunnerAgentManager.TestRunnerExecutionAgent.RunTests(CancellationToken cancelCt, CancellationToken abortCt) in RunTests.il:line IL_00AE mvid 0C36 or RunTests.il:line IL_02D6 mvid 0C36
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Common.Extensions.TaskExtensions.CancelIf(Task task, CancellationToken ct, TaskCreationOptions options) in CancelIf.il:line IL_0126 mvid 0C36
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task`1.TrySetResult(TResult result) in TrySetResult.il:line IL_004B mvid DE3E
     at System.Threading.Tasks.Task.TwoTaskWhenAnyPromise`1.Invoke(Task completingTask) in Invoke.il:line IL_0088 mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Common.Extensions.TaskExtensions.ThrowIf[TException](Task task, Task signallingTask, Func`1 exceptionFactory) in ThrowIf.il:line IL_0118 mvid 0C36
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task`1.TrySetResult(TResult result) in TrySetResult.il:line IL_004B mvid DE3E
     at System.Threading.Tasks.Task.TwoTaskWhenAnyPromise`1.Invoke(Task completingTask) in Invoke.il:line IL_0088 mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.TestRunnerAgentManager.TestRunnerExecutionAgent.<RunTests>b__8_1()
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s) in ExecutionContextCallback.il:line IL_0000 mvid DE3E
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(Exception exception, Task`1& taskField) in SetException.il:line IL_0025 mvid DE3E
     at JetBrains.ReSharper.UnitTestFramework.Execution.TestRunner.Activation.ServerMessageBroker.SendMessage(IMessage message) in SendMessage.il:line IL_0077 mvid 0C36
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext(Thread threadPoolThread) in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext() in MoveNext.il:line IL_0000 mvid DE3E or MoveNext.il:line IL_0040 mvid DE3E
     at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) in RunOrScheduleAction.il:line IL_003B mvid DE3E
     at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) in RunContinuations.il:line IL_0065 mvid DE3E or RunContinuations.il:line IL_0090 mvid DE3E
     at System.Threading.Tasks.Task.FinishSlow(Boolean userDelegateExecute) in FinishSlow.il:line IL_0003 mvid DE3E
     at System.Threading.Tasks.Task.TrySetException(Object exceptionObject) in TrySetException.il:line IL_0022 mvid DE3E
     at System.Threading.Tasks.TaskCompletionSource`1.TrySetException(Exception exception) in TrySetException.il:line IL_000A mvid DE3E
     at System.Threading.Tasks.TaskCompletionSource`1.SetException(Exception exception) in SetException.il:line IL_0000 mvid DE3E
     at JetBrains.Rd.Reflection.ProxyGeneratorUtil.<>c__DisplayClass0_0`1.<ToTask>b__0(RdTaskResult`1 r) in ProxyGeneratorUtil.il:line IL_0039 mvid 45DA
     at JetBrains.Collections.Viewable.SignalBase`1.Fire(T value) in Fire.il:line IL_0028 mvid 2A6A
     at JetBrains.Collections.Viewable.WriteOnceProperty`1.WriteOnceSignal.Fire(T value) in Fire.il:line IL_0000 mvid 2A6A
     at JetBrains.Collections.Viewable.WriteOnceProperty`1.SetIfEmpty(T newValue) in SetIfEmpty.il:line IL_003A mvid 2A6A
     at JetBrains.Rd.Tasks.WiredRdTask`2.CallSite.<>c__DisplayClass5_0.<OnWireReceived>b__0() in CallSite.il:line IL_0000 mvid 82A2
     at JetBrains.Rd.Impl.MessageBroker.RdWireableDispatchHelper.<>c__DisplayClass12_0.<DoDispatch>b__0() in RdWireableDispatchHelper.il:line IL_008B mvid 82A2
     at JetBrains.Rd.Impl.MessageBroker.RdWireableDispatchHelper.DoDispatch(Lifetime lifetime, IScheduler scheduler, Action action) in DoDispatch.il:line IL_00BD mvid 82A2
     at JetBrains.Rd.Tasks.WiredRdTask`2.CallSite.OnWireReceived(IProtocol proto, SerializationCtx ctx, UnsafeReader reader, IRdWireableDispatchHelper dispatchHelper) in OnWireReceived.il:line IL_0157 mvid 82A2
     at JetBrains.Rd.Tasks.WiredRdTask`2.OnWireReceived(UnsafeReader reader, IRdWireableDispatchHelper dispatchHelper) in OnWireReceived.il:line IL_0071 mvid 82A2
     at JetBrains.Rd.Impl.MessageBroker.DispatchImpl(Byte[] msg) in DispatchImpl.il:line IL_0112 mvid 82A2
     at JetBrains.Rd.Impl.MessageBroker.Dispatch(Byte[] msg) in Dispatch.il:line IL_0038 mvid 82A2
     at JetBrains.Diagnostics.LogEx.Catch(ILog log, Action action) in Catch.il:line IL_0000 mvid 2A6A
     at JetBrains.Rd.Impl.SocketWire.Base.ReadMsg() in ReadMsg.il:line IL_00BC mvid 82A2
     at JetBrains.Rd.Impl.SocketWire.Base.ReceiverProc(Socket socket) in ReceiverProc.il:line IL_006C mvid 82A2
     at JetBrains.Rd.Impl.SocketWire.Base.<>c__DisplayClass19_0.<.ctor>b__1(Socket socket) in Base.il:line IL_005C mvid 82A2
     at JetBrains.Collections.Viewable.SignalBase`1.Fire(T value) in Fire.il:line IL_0028 mvid 2A6A
     at JetBrains.Collections.Viewable.ViewableProperty`1.set_Value(T value)
     at JetBrains.Rd.Impl.SocketWire.Server.<>c__DisplayClass4_0.<StartServerSocket>b__1() in Server.il:line IL_0022 mvid 82A2 or Server.il:line IL_00F6 mvid 82A2
     at JetBrains.Diagnostics.LogEx.Catch(ILog log, Action action) in Catch.il:line IL_0000 mvid 2A6A
     at JetBrains.Rd.Impl.SocketWire.Server.<>c__DisplayClass4_0.<StartServerSocket>b__0() in Server.il:line IL_0022 mvid 82A2 or Server.il:line IL_00F6 mvid 82A2
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in RunInternal.il:line IL_0040 mvid DE3E
”
ExceptionPath = Root
ClassName = JetBrains.Util.LoggerException
HResult = COR_E_APPLICATION=80131600

@rynoV
Copy link
Contributor Author

rynoV commented Jan 7, 2025

Here's the patch

Index: Expecto/Expecto.fs
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/Expecto/Expecto.fs b/Expecto/Expecto.fs
--- a/Expecto/Expecto.fs	(revision ec1eb970d9e73d3f48c197ceedd851f5eb10ad39)
+++ b/Expecto/Expecto.fs	(date 1736273834444)
@@ -449,8 +449,6 @@
     | Colours of int
     /// Adds a test printer.
     | Printer of TestPrinters
-    /// Whether to show skipped tests in the output.
-    | PrintSkippedTests of bool
     /// Sets the verbosity level.
     | Verbosity of LogLevel
     /// Append a summary handler.
Index: Expecto/CSharp.fs
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/Expecto/CSharp.fs b/Expecto/CSharp.fs
--- a/Expecto/CSharp.fs	(revision ec1eb970d9e73d3f48c197ceedd851f5eb10ad39)
+++ b/Expecto/CSharp.fs	(date 1736274464043)
@@ -13,7 +13,7 @@
 // C# is weak and can't really handle Async or partial application
 type ITestPrinter =
   abstract member BeforeRun   : Test -> Task
-  abstract member BeforeEach  : string -> Task
+  abstract member BeforeEach  : name: string * enabled: bool -> Task
   abstract member Info        : string -> Task
   abstract member Passed      : string * TimeSpan -> Task
   abstract member Ignored     : string * string -> Task
@@ -28,7 +28,7 @@
 
   let private printerFromInterface (i : ITestPrinter) =
       { beforeRun   = fun t ->      async { return! i.BeforeRun(t) |> Async.AwaitTask }
-        beforeEach  = fun s ->      async { return! i.BeforeEach(s) |> Async.AwaitTask }
+        beforeEach = fun s e ->     async { return! i.BeforeEach(s, e) |> Async.AwaitTask }
         passed      = fun n d ->    async { return! i.Passed(n, d) |> Async.AwaitTask }
         info        = fun s ->      async { return! i.Info(s) |> Async.AwaitTask }
         ignored     = fun n m ->    async { return! i.Ignored(n, m) |> Async.AwaitTask }
Index: Expecto.Tests.CSharp/Tests.cs
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/Expecto.Tests.CSharp/Tests.cs b/Expecto.Tests.CSharp/Tests.cs
--- a/Expecto.Tests.CSharp/Tests.cs	(revision ec1eb970d9e73d3f48c197ceedd851f5eb10ad39)
+++ b/Expecto.Tests.CSharp/Tests.cs	(date 1736272442448)
@@ -10,7 +10,7 @@
 {
     public class CSharpPrinter : ITestPrinter
     {
-        Task ITestPrinter.BeforeEach(string value)
+        Task ITestPrinter.BeforeEach(string value, bool enabled)
         {
             return Task.CompletedTask;
         }
Index: Expecto/Expecto.Impl.fs
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/Expecto/Expecto.Impl.fs b/Expecto/Expecto.Impl.fs
--- a/Expecto/Expecto.Impl.fs	(revision ec1eb970d9e73d3f48c197ceedd851f5eb10ad39)
+++ b/Expecto/Expecto.Impl.fs	(date 1736274398337)
@@ -207,8 +207,8 @@
   type TestPrinters =
     { /// Called before a test run (e.g. at the top of your main function)
       beforeRun: Test -> Async<unit>
-      /// Called before atomic test (TestCode) is executed.
-      beforeEach: string -> Async<unit>
+      /// test name -> enabled -> unit. Called before a test is executed (when enabled = true) or skipped (when enabled = false)
+      beforeEach: string -> bool -> Async<unit>
       /// info
       info: string -> Async<unit>
       /// test name -> time taken -> unit
@@ -232,7 +232,7 @@
 
     static member silent =
       { beforeRun = fun _ -> async.Zero()
-        beforeEach = fun _ -> async.Zero()
+        beforeEach = fun _ _ -> async.Zero()
         info = fun _ -> async.Zero()
         passed = fun _ _ -> async.Zero()
         ignored = fun _ _ -> async.Zero()
@@ -244,7 +244,7 @@
       { beforeRun = fun _tests ->
           logger.logWithAck Info (eventX "EXPECTO? Running tests...")
 
-        beforeEach = fun n ->
+        beforeEach = fun n _ ->
           logger.logWithAck Debug (
             eventX "{testName} starting..."
             >> setField "testName" n)
@@ -404,8 +404,8 @@
           tcLog "testSuiteStarted" [
             "name", "ExpectoTestSuite" ] }
 
-        beforeEach = fun n -> async {
-          do! innerPrinter.beforeEach n
+        beforeEach = fun n e -> async {
+          do! innerPrinter.beforeEach n e
           tcLog "testStarted" [
             "flowId", formatName n
             "name", formatName n ] }
@@ -439,7 +439,7 @@
             "duration", d.TotalMilliseconds |> int |> string ] }
 
         exn = fun n e d -> async {
-          do! innerPrinter.beforeEach n
+          do! innerPrinter.beforeEach n true
           tcLog "testFailed" [
             "flowId", formatName n
             "name", formatName n
@@ -460,7 +460,7 @@
         do! b
       }
       { beforeRun   = fun _tests -> runTwoAsyncs (first.beforeRun _tests) (second.beforeRun _tests)
-        beforeEach  = fun n -> runTwoAsyncs (first.beforeEach n) (second.beforeEach n)
+        beforeEach  = fun n e -> runTwoAsyncs (first.beforeEach n e) (second.beforeEach n e)
         info        = fun s -> runTwoAsyncs (first.info s) (second.info s)
         passed      = fun n d -> runTwoAsyncs (first.passed n d) (second.passed n d)
         ignored     = fun n m -> runTwoAsyncs (first.ignored n m) (second.ignored n m)
@@ -498,8 +498,6 @@
       listStates : FocusState list
       /// Allows the test printer to be parametised to your liking.
       printer : TestPrinters
-      /// Whether to show skipped tests in the output.
-      printSkippedTests : bool
       /// Verbosity level (default: Info).
       verbosity : LogLevel
       /// Process name to log under (default: "Expecto")
@@ -538,7 +536,6 @@
             TestPrinters.defaultPrinter
           else
             TestPrinters.teamCityPrinter TestPrinters.defaultPrinter
-        printSkippedTests = true
         verbosity = Info
         logName = None
         locate = fun _ -> SourceLocation.empty
@@ -651,18 +648,15 @@
 
         let beforeEach (test:FlatTest) =
           let name = config.joinWith.format test.name
-          if config.printSkippedTests || test.shouldSkipEvaluation.IsNone then
-            config.printer.beforeEach name
-          else
-            async.Zero()
+
+          config.printer.beforeEach name <| Option.isNone test.shouldSkipEvaluation
 
         async {
           let! beforeAsync = beforeEach test |> Async.StartChild
           let! result = execTestAsync ct config test
           do! beforeAsync
 
-          if config.printSkippedTests || test.shouldSkipEvaluation.IsNone then
-            do! TestPrinters.printResult config test result
+          do! TestPrinters.printResult config test result
 
           if progressStarted && Option.isNone test.shouldSkipEvaluation then
             Fraction (Interlocked.Increment testsCompleted, testLength)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Option to suppress "Skipped" messages
2 participants