diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj
index dbddd3d7c6..836424e727 100644
--- a/src/Fantomas.Tests/Fantomas.Tests.fsproj
+++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj
@@ -27,6 +27,7 @@
+
diff --git a/src/Fantomas.Tests/ToolLocatorTests.fs b/src/Fantomas.Tests/ToolLocatorTests.fs
new file mode 100644
index 0000000000..72c27d3c66
--- /dev/null
+++ b/src/Fantomas.Tests/ToolLocatorTests.fs
@@ -0,0 +1,25 @@
+module Fantomas.CoreGlobalTool.Tests.ToolLocatorTests
+
+open Fantomas.Client
+open Fantomas.Client.LSPFantomasServiceTypes
+open Fantomas.Client.Contracts
+open NUnit.Framework
+
+[]
+[]
+let ``locate fantomas tool`` () =
+ let pwd = @"C:\Users\nojaf\Projects"
+ let result = FantomasToolLocator.findFantomasTool (Folder pwd)
+
+ match result with
+ | Error error -> Assert.Fail $"Could not locate tool: %A{error}"
+ | Ok(FantomasToolFound(FantomasVersion(version), startInfo)) ->
+ let result = FantomasToolLocator.createFor startInfo
+
+ match result with
+ | Error error -> Assert.Fail $"Could not start tool: %A{error}"
+ | Ok runningFantomasTool ->
+ let version2 =
+ runningFantomasTool.RpcClient.InvokeAsync(Methods.Version).Result
+
+ Assert.AreEqual(version, $"v{version2}")
diff --git a/src/Fantomas/Daemon.fs b/src/Fantomas/Daemon.fs
index 31cc92f45e..f8169b28aa 100644
--- a/src/Fantomas/Daemon.fs
+++ b/src/Fantomas/Daemon.fs
@@ -16,13 +16,12 @@ open Fantomas.EditorConfig
type FantomasDaemon(sender: Stream, reader: Stream) as this =
let rpc: JsonRpc = JsonRpc.Attach(sender, reader, this)
+ let traceListener = new DefaultTraceListener()
do
// hook up request/response logging for debugging
rpc.TraceSource <- TraceSource(typeof.Name, SourceLevels.Verbose)
-
- rpc.TraceSource.Listeners.Add(new SerilogTraceListener.SerilogTraceListener(typeof.Name))
- |> ignore
+ rpc.TraceSource.Listeners.Add traceListener |> ignore
let disconnectEvent = new ManualResetEvent(false)
@@ -33,7 +32,9 @@ type FantomasDaemon(sender: Stream, reader: Stream) as this =
do rpc.Disconnected.Add(fun _ -> exit ())
interface IDisposable with
- member this.Dispose() = disconnectEvent.Dispose()
+ member this.Dispose() =
+ traceListener.Dispose()
+ disconnectEvent.Dispose()
/// returns a hot task that resolves when the stream has terminated
member this.WaitForClose = rpc.Completion