@@ -8,7 +8,10 @@ module Servant.Client.JSaddleSpec where
88
99import Control.Concurrent
1010 (threadDelay)
11−import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar)
11+import Control.Concurrent.MVar
12+ (newEmptyMVar, putMVar, takeMVar)
13+import Control.Exception
14+ (handle, throwIO)
1215import Control.Monad.Trans
1316import Data.Aeson
1417import Data.ByteString
@@ -28,15 +31,16 @@ import qualified Language.Javascript.JSaddle.WebSockets as WS
2831import qualified Network.HTTP.Types as Http
2932import qualified Network.Wai as Wai
3033import Network.Wai.Handler.Warp as Warp
31−import qualified System.Process as P
3234import Network.Wai.Middleware.AddHeaders
3335import Network.Wai.Middleware.Cors
3436 (simpleCors)
3537import Network.WebSockets
3638 (defaultConnectionOptions)
39+import qualified Network.WebSockets as WS
3740import Servant.API
3841import Servant.Client.JSaddle
3942import Servant.Server
43+import qualified System.Process as P
4044import Test.Hspec
4145
4246type TestApi = ReqBody '[OctetStream] ByteString :> Post '[JSON] TestResponse
@@ -104,7 +108,11 @@ spec = do
104108 let serverApp :: IO Application
105109 serverApp = pure $ logRequest $ addCors $ serve testApi testServer
106110
107− Warp.testWithApplication serverApp $ \serverPort -> do
111+ let handler :: WS.ConnectionException -> IO ()
112+ handler WS.ConnectionClosed = return ()
113+ handler e = throwIO e
114+
115+ handle handler $ Warp.testWithApplication serverApp $ \serverPort -> do
108116 threadDelay $ 500 * 1000
109117
110118 let clientApp :: IO Application