Add a finally and timeout to ensure the call to killThread
authorjneira <atreyu.bbb@gmail.com>
Wed, 10 Jul 2019 22:08:48 +0000 (00:08 +0200)
committerjneira <atreyu.bbb@gmail.com>
Wed, 10 Jul 2019 22:08:48 +0000 (00:08 +0200)
src/Language/Haskell/LSP/Test/Session.hs

index 1777f15f2750a913e812df81c7a42d7c6156fee1..21a5fe7002af4061552c390bbc24442bec4786d2 100644 (file)
@@ -65,6 +65,7 @@ import Language.Haskell.LSP.Test.Exceptions
 import System.Console.ANSI
 import System.Directory
 import System.IO
+import System.Timeout
 
 -- | A session representing one instance of launching and connecting to a server.
 --
@@ -216,7 +217,8 @@ runSessionWithHandles serverIn serverOut serverHandler config caps rootDir exitS
       
       errorHandler = throwTo mainThreadId :: SessionException -> IO()
       serverLauncher = forkIO $ catch (serverHandler serverOut context) errorHandler
-      serverFinalizer tid = runSession' exitServer >> killThread tid
+      serverFinalizer tid = finally (timeout 60000000 (runSession' exitServer))
+                                    (killThread tid)
       
   (result, _) <- bracket serverLauncher serverFinalizer (const $ runSession' session)
   return result