static-ls-0.1.2: test/StaticLS/HI/FileSpec.hs
module StaticLS.HI.FileSpec (spec)
where
import Control.Monad.Trans.Maybe (runMaybeT)
import StaticLS.HI.File
import StaticLS.StaticEnv
import System.Directory
import System.FilePath
import Test.Hspec
import qualified TestImport as Test
import qualified TestImport.Assert as Test
spec :: Spec
spec = do
describe "Can convert from src to hi file" $ do
describe "src file to hi file" $ do
it "returns a valid hi file when called on a src file" $ do
staticEnv <- Test.initStaticEnv
hiFile <-
runStaticLs staticEnv $
runMaybeT $
srcFilePathToHiFilePath "test/TestData/Mod1.hs"
print hiFile
let relativeHiFile = makeRelative staticEnv.wsRoot <$> hiFile
hiFileExists <- maybe (pure False) doesFileExist relativeHiFile
relativeHiFile `shouldBe` Just "test/TestData/.hifiles/TestData/Mod1.hi"
hiFileExists `shouldBe` True
it "returns a valid hi file when called on a test/ file" $ do
staticEnv <- Test.initStaticEnv
hiFile <-
runStaticLs staticEnv $
runMaybeT $
srcFilePathToHiFilePath "test/TestData/Mod1.hs"
let relativeHiFile = makeRelative staticEnv.wsRoot <$> hiFile
hiFileExists <- maybe (pure False) doesFileExist relativeHiFile
relativeHiFile `shouldBe` Just "test/TestData/.hifiles/TestData/Mod1.hi"
hiFileExists `shouldBe` True
describe "readHiFile" $ do
it "Returns a valid hie file" $ do
hiFile <- readHiFile "test/TestData/.hifiles/TestData/Mod1.hi"
_ <- Test.assertJust "expected succesful read" hiFile
(pure () :: IO ())
it "Does not crash when given an invalid hie file to read " $ do
hiFile <- readHiFile "./test/TestData/Mod1.hs"
_ <- Test.assertNothing "expected failure" hiFile
(pure () :: IO ())
it "Does not crash when given no file to read" $ do
hiFile <- readHiFile ""
_ <- Test.assertNothing "expected failure" hiFile
(pure () :: IO ())