From aaf137df9fe5141f6491c6ecf6d7f2e2256f025d Mon Sep 17 00:00:00 2001 From: eagletmt Date: Thu, 14 Mar 2013 23:24:36 +0900 Subject: [PATCH] Add test cases for type and info about TH check --- test/InfoSpec.hs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/InfoSpec.hs b/test/InfoSpec.hs index a6c52a4..eaec540 100644 --- a/test/InfoSpec.hs +++ b/test/InfoSpec.hs @@ -2,6 +2,7 @@ module InfoSpec where import CabalApi import Cradle +import Data.List (isPrefixOf) import Expectation import Info import Test.Hspec @@ -16,3 +17,28 @@ spec = do cradle <- findCradle Nothing strVer res <- typeExpr defaultOptions cradle "Data.Foo" 9 5 "Data/Foo.hs" res `shouldBe` "9 5 11 40 \"Int -> a -> a -> a\"\n7 1 11 40 \"Int -> Integer\"\n" + + it "works with a module using TemplateHaskell" $ do + withDirectory_ "test/data" $ do + cradle <- getGHCVersion >>= findCradle Nothing . fst + res <- typeExpr defaultOptions cradle "Bar" 5 1 "Bar.hs" + res `shouldBe` unlines ["5 1 5 20 \"[Char]\""] + + it "works with a module that imports another module using TemplateHaskell" $ do + withDirectory_ "test/data" $ do + cradle <- getGHCVersion >>= findCradle Nothing . fst + res <- typeExpr defaultOptions cradle "Main" 3 8 "Main.hs" + res `shouldBe` unlines ["3 8 3 16 \"String -> IO ()\"", "3 8 3 20 \"IO ()\"", "3 1 3 20 \"IO ()\""] + + describe "infoExpr" $ do + it "works with a module using TemplateHaskell" $ do + withDirectory_ "test/data" $ do + cradle <- getGHCVersion >>= findCradle Nothing . fst + res <- infoExpr defaultOptions cradle "Bar" "foo" "Bar.hs" + res `shouldSatisfy` ("foo :: ExpQ" `isPrefixOf`) + + it "works with a module that imports another module using TemplateHaskell" $ do + withDirectory_ "test/data" $ do + cradle <- getGHCVersion >>= findCradle Nothing . fst + res <- infoExpr defaultOptions cradle "Main" "bar" "Main.hs" + res `shouldSatisfy` ("bar :: [Char]" `isPrefixOf`)