content: {-# LANGUAGE OverloadedStrings #-}
  
  import Data.Attoparsec.Text
  import Data.Text (Text)
  import qualified Data.Text.IO as T
  import Hie.Cabal.Parser
  import Hie.Yaml
  import Test.Hspec
  import Test.Hspec.Attoparsec
  
  main :: IO ()
  main = hspec spec
  
  spec :: Spec
  spec = do
    describe "Should Succeed" $
      it "successfully parses package" $
        do
          cf <- T.readFile "implicit-hie.cabal"
          parsePackage' cf
            `shouldParse` Package
              "implicit-hie"
              [ Comp Test "implicit-hie-test" "test/Spec.hs",
                Comp Exe "gen-hie" "app/Main.hs",
                Comp Lib "" "src/Hie/Cabal/Parser.hs",
                Comp Lib "" "src/Hie/Locate.hs",
                Comp Lib "" "src/Hie/Yaml.hs"
              ]
  
    describe "Should Succeed" $
      it "successfully generates stack hie.yaml" $
        do
          sf <- readFile "test/stackHie.yaml"
          cf <- T.readFile "implicit-hie.cabal"
          (hieYaml "stack" . fmtPkgs "stack" . (: []) <$> parsePackage' cf)
            `shouldBe` Right sf
  
    describe "Should Succeed" $
      it "successfully generates cabal hie.yaml for haskell-language-server" $
        do
          f <- T.readFile "test/haskell-language-server-cabal"
          o <- readFile "test/hie.yaml.cbl"
          (hieYaml "cabal" . fmtPkgs "cabal" . (: []) <$> parsePackage' f)
            `shouldBe` Right o
  