@@ -2,6 +2,7 @@
22-- Utility functions for the test suite.
33
44module Tests.Helpers ( lit
5+ , file
56 , test
67 , (=?>)
78 , property
@@ -20,6 +21,7 @@ import Text.Pandoc.Shared (normalize, defaultWriterOptions,
2021 WriterOptions(..), removeTrailingSpace)
2122import Text.Pandoc.Writers.Native (writeNative)
2223import Language.Haskell.TH.Quote
24+import Language.Haskell.TH.Syntax (Q, runIO)
2325import qualified Test.QuickCheck.Property as QP
2426
2527lit :: QuasiQuoter
@@ -28,6 +30,18 @@ lit = QuasiQuoter ((\a -> let b = rnl a in [|b|]) . filter (/= '\r')) $
2830 where rnl ('\n':xs) = xs
2931 rnl xs = xs
3032
33+file :: QuasiQuoter
34+file = quoteFile lit
35+
36+-- adapted from TH 2.5 code
37+quoteFile :: QuasiQuoter -> QuasiQuoter
38+quoteFile (QuasiQuoter { quoteExp = qe, quotePat = qp }) =
39+ QuasiQuoter { quoteExp = get qe, quotePat = get qp }
40+ where
41+ get :: (String -> Q a) -> String -> Q a
42+ get old_quoter file_name = do { file_cts <- runIO (readFile file_name)
43+ ; old_quoter file_cts }
44+
3145test :: (ToString a, ToString b, ToString c)
3246 => (a -> b) -- ^ function to test
3347 -> String -- ^ name of test case