bugsnag-1.0.0.0: test/Network/Bugsnag/CodeIndexSpec.hs
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-missing-local-signatures #-}
module Network.Bugsnag.CodeIndexSpec
( spec
) where
import Prelude
import Network.Bugsnag.CodeIndex
import Test.Hspec
spec :: Spec
spec = do
describe "CodeIndex" $ do
let index = $(buildCodeIndex "test/fixtures/index-project/**/*.hs")
it "can find ranges within the file" $ do
let path = "test/fixtures/index-project/Foo.hs"
range = (0, 3)
sourceLines =
[ (0, "module Foo where")
, (1, "")
, (2, "data What = What")
, (3, " deriving Show")
]
findSourceRange path range index `shouldBe` Just sourceLines
it "handles ranges that extend beyond bounds" $ do
let path = "test/fixtures/index-project/Foo.hs"
range = (6, 10)
sourceLines =
[(6, "what 0 = Just What"), (7, "what _ = Nothing")]
findSourceRange path range index `shouldBe` Just sourceLines
it "handles ranges that are totally beyond bounds" $ do
let path = "test/fixtures/index-project/Foo.hs"
range = (10, 12)
findSourceRange path range index `shouldBe` Just []
it "handles missing files" $ do
findSourceRange "nope.hs" (0, 3) index `shouldBe` Nothing