Change server filepath to a command to run
authorLuke Lau <luke_lau@icloud.com>
Mon, 11 Jun 2018 15:06:47 +0000 (11:06 -0400)
committerLuke Lau <luke_lau@icloud.com>
Mon, 11 Jun 2018 15:06:47 +0000 (11:06 -0400)
example/Main.hs
src/Language/Haskell/LSP/Test.hs
src/Language/Haskell/LSP/Test/Replay.hs
test/Test.hs

index fc453db39cdb032a98cb0c468e697167816458cf..29795fa22e52b76279d1ae98eca5c5f111eb72cd 100644 (file)
@@ -4,7 +4,7 @@ import Data.Proxy
 
 import Control.Monad.IO.Class
 
-main = runSession "hie" "test/recordings/renamePass" $ do
+main = runSession "hie --lsp" "test/recordings/renamePass" $ do
 
   docItem <- getDocItem "Desktop/simple.hs" "haskell"
   docId <- TextDocumentIdentifier <$> getDocUri "Desktop/simple.hs"
index 79b7b1e7147934150d4cf632b9c142940e2191e0..086a34c9257465d8ef284f66e5138486dbc91832 100644 (file)
@@ -81,7 +81,7 @@ import Language.Haskell.LSP.Test.Decoding
 import Language.Haskell.LSP.Test.Parsing
 
 -- | Starts a new session.
-runSession :: FilePath -- ^ The filepath to the server executable.
+runSession :: String -- ^ The command to run the server.
            -> FilePath -- ^ The filepath to the root directory for the session.
            -> Session a -- ^ The session to run.
            -> IO ()
@@ -113,16 +113,15 @@ runSession serverExe rootDir session = do
 -- | An internal version of 'runSession' that allows for a custom handler to listen to the server.
 -- It also does not automatically send initialize and exit messages.
 runSessionWithHandler :: (Handle -> Session ())
-                      -> FilePath
+                      -> String
                       -> FilePath
                       -> Session a
                       -> IO a
 runSessionWithHandler serverHandler serverExe rootDir session = do
   absRootDir <- canonicalizePath rootDir
 
-  (Just serverIn, Just serverOut, Nothing, serverProc) <- createProcess
-    (proc serverExe ["--lsp", "-d", "-l", "/tmp/hie-test.log"])
-    { std_in = CreatePipe, std_out = CreatePipe }
+  let createProc = (shell serverExe) { std_in = CreatePipe, std_out = CreatePipe }
+  (Just serverIn, Just serverOut, Nothing, serverProc) <- createProcess createProc
 
   hSetBuffering serverIn  NoBuffering
   hSetBuffering serverOut NoBuffering
index dfa364b44c3600b4682eca2f94699f2fea16fad3..9d7f136a20056a7f81359e23f9856c0248c915de 100644 (file)
@@ -29,7 +29,7 @@ import           Language.Haskell.LSP.Test.Messages
 -- makes sure it matches up with an expected response.
 -- The session directory should have a captured session file in it
 -- named "session.log".
-replaySession :: FilePath -- ^ The filepath to the server executable.
+replaySession :: String -- ^ The command to run the server.
               -> FilePath -- ^ The recorded session directory.
               -> IO Bool
 replaySession serverExe sessionDir = do
index 426dd6bd704f3df283e2f19e7ac08609697211d9..a639e38dbb1dd222bc5b202a513623d0a3b53f97 100644 (file)
@@ -12,7 +12,7 @@ import           ParsingTests
 main = hspec $ do
   describe "manual session" $ do
     it "passes a test" $
-      runSession "hie" "test/recordings/renamePass" $ do
+      runSession "hie --lsp" "test/recordings/renamePass" $ do
         doc <- openDoc "Desktop/simple.hs" "haskell"
 
         skipMany loggingNotification
@@ -35,7 +35,7 @@ main = hspec $ do
     
     it "fails a test" $
       -- TODO: Catch the exception in haskell-lsp-test and provide nicer output
-      let session = runSession "hie" "test/recordings/renamePass" $ do
+      let session = runSession "hie --lsp" "test/recordings/renamePass" $ do
                       openDoc "Desktop/simple.hs" "haskell"
                       skipMany loggingNotification
                       anyRequest
@@ -43,8 +43,8 @@ main = hspec $ do
   
   describe "replay session" $ do
     it "passes a test" $
-      replaySession "hie" "test/recordings/renamePass" `shouldReturn` True
+      replaySession "hie --lsp" "test/recordings/renamePass" `shouldReturn` True
     it "fails a test" $
-      replaySession "hie" "test/recordings/renameFail" `shouldReturn` False
+      replaySession "hie --lsp" "test/recordings/renameFail" `shouldReturn` False
   
   parsingSpec