projects
/
lsp-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add getCodeActions, getCurrentDiagnostics, bump
[lsp-test.git]
/
src
/
Language
/
Haskell
/
LSP
/
Test
/
Exceptions.hs
diff --git
a/src/Language/Haskell/LSP/Test/Exceptions.hs
b/src/Language/Haskell/LSP/Test/Exceptions.hs
index b337f0bee70032fc1b7595247966ca5a1ca6bedf..5923d2dadb5378452876f5f053facb1d38630f21 100644
(file)
--- a/
src/Language/Haskell/LSP/Test/Exceptions.hs
+++ b/
src/Language/Haskell/LSP/Test/Exceptions.hs
@@
-3,9
+3,13
@@
module Language.Haskell.LSP.Test.Exceptions where
import Control.Exception
import Language.Haskell.LSP.Messages
import Language.Haskell.LSP.Types
import Control.Exception
import Language.Haskell.LSP.Messages
import Language.Haskell.LSP.Types
-import Data.Aeson
+import Data.Aeson.Encode.Pretty
+import Data.Algorithm.Diff
+import Data.Algorithm.DiffOutput
+import Data.List
import qualified Data.ByteString.Lazy.Char8 as B
import qualified Data.ByteString.Lazy.Char8 as B
+-- | An exception that can be thrown during a 'Haskell.LSP.Test.Session.Session'
data SessionException = Timeout
| UnexpectedMessage String FromServerMessage
| ReplayOutOfOrder FromServerMessage [FromServerMessage]
data SessionException = Timeout
| UnexpectedMessage String FromServerMessage
| ReplayOutOfOrder FromServerMessage [FromServerMessage]
@@
-23,15
+27,20
@@
instance Show SessionException where
"Was parsing: " ++ expected ++ "\n" ++
"Last message received: " ++ show lastMsg
show (ReplayOutOfOrder received expected) =
"Was parsing: " ++ expected ++ "\n" ++
"Last message received: " ++ show lastMsg
show (ReplayOutOfOrder received expected) =
- "Replay is out of order:\n" ++
+ let expected' = nub expected
+ getJsonDiff = lines . B.unpack . encodePretty
+ showExp exp = B.unpack (encodePretty exp) ++ "\nDiff:\n" ++
+ ppDiff (getGroupedDiff (getJsonDiff received) (getJsonDiff exp))
+ in "Replay is out of order:\n" ++
-- Print json so its a bit easier to update the session logs
-- Print json so its a bit easier to update the session logs
-
"Received from server:\n" ++ B.unpack (encode
received) ++ "\n" ++
-
"Expected one of:\n" ++ unlines (map (B.unpack . encode) expected
)
+
"Received from server:\n" ++ B.unpack (encodePretty
received) ++ "\n" ++
+
"Expected one of:\n" ++ unlines (map showExp expected'
)
show UnexpectedDiagnostics = "Unexpectedly received diagnostics from the server."
show (IncorrectApplyEditRequest msgStr) = "ApplyEditRequest didn't contain document, instead received:\n"
++ msgStr
show (UnexpectedResponseError lid e) = "Received an exepected error in a response for id " ++ show lid ++ ":\n"
++ show e
show UnexpectedDiagnostics = "Unexpectedly received diagnostics from the server."
show (IncorrectApplyEditRequest msgStr) = "ApplyEditRequest didn't contain document, instead received:\n"
++ msgStr
show (UnexpectedResponseError lid e) = "Received an exepected error in a response for id " ++ show lid ++ ":\n"
++ show e
+-- | A predicate that matches on any 'SessionException'
anySessionException :: SessionException -> Bool
anySessionException = const True
anySessionException :: SessionException -> Bool
anySessionException = const True