1
1
mirror of https://github.com/github/semantic.git synced 2024-12-25 07:55:12 +03:00

Return the actual exception when parsing/assignment fails.

This commit is contained in:
Rob Rix 2019-06-05 14:28:28 -04:00
parent bc80f6dc20
commit 5a35598213
No known key found for this signature in database
GPG Key ID: F188A01508EA1CF7
2 changed files with 12 additions and 5 deletions

View File

@ -1,5 +1,6 @@
module Integration.Spec (spec) where
import Control.Exception (throw)
import Data.Foldable (find, traverse_, for_)
import Data.List (union, concat, transpose)
import qualified Data.ByteString as B
@ -83,9 +84,12 @@ normalizeName path = dropExtension $ dropExtension path
testParse :: TaskSession -> FilePath -> FilePath -> Expectation
testParse session path expectedOutput = do
actual <- verbatim <$> parseFilePath session path
expected <- verbatim <$> B.readFile expectedOutput
actual `shouldBe` expected
actual <- fmap verbatim <$> parseFilePath session path
case actual of
Left err -> throw err
Right actual -> do
expected <- verbatim <$> B.readFile expectedOutput
actual `shouldBe` expected
testDiff :: TaskSession -> Both FilePath -> FilePath -> Expectation
testDiff config paths expectedOutput = do

View File

@ -97,8 +97,11 @@ diffFilePaths :: TaskSession -> Both FilePath -> IO ByteString
diffFilePaths session paths = readFilePathPair paths >>= runTask session . parseDiffBuilder @[] DiffSExpression . pure >>= either (die . displayException) (pure . runBuilder)
-- | Returns an s-expression parse tree for the specified FilePath.
parseFilePath :: TaskSession -> FilePath -> IO ByteString
parseFilePath session path = (fromJust <$> readBlobFromFile (fileForPath path)) >>= runTask session . parseTermBuilder @[] TermSExpression . pure >>= either (die . displayException) (pure . runBuilder)
parseFilePath :: TaskSession -> FilePath -> IO (Either SomeException ByteString)
parseFilePath session path = do
blob <- readBlobFromFile (fileForPath path)
res <- runTask session $ parseTermBuilder TermSExpression (toList blob)
pure (runBuilder <$> res)
-- | Read two files to a BlobPair.
readFilePathPair :: Both FilePath -> IO BlobPair