git.iko.soy/typeable/pandoc
on master help sign in
Tests.Helpers: Added file quasiquoter.
91cc03bJohn MacFarlane
tests/Tests/Helpers.hs+14
@@ -2,6 +2,7 @@
2-- Utility functions for the test suite.
2-- Utility functions for the test suite.
3
3
4module Tests.Helpers ( lit
4module Tests.Helpers ( lit
5+ , file
5 , test
6 , test
6 , (=?>)
7 , (=?>)
7 , property
8 , property
@@ -20,6 +21,7 @@ import Text.Pandoc.Shared (normalize, defaultWriterOptions,
20 WriterOptions(..), removeTrailingSpace)
21 WriterOptions(..), removeTrailingSpace)
21import Text.Pandoc.Writers.Native (writeNative)
22import Text.Pandoc.Writers.Native (writeNative)
22import Language.Haskell.TH.Quote
23import Language.Haskell.TH.Quote
24+import Language.Haskell.TH.Syntax (Q, runIO)
23import qualified Test.QuickCheck.Property as QP
25import qualified Test.QuickCheck.Property as QP
24
26
25lit :: QuasiQuoter
27lit :: QuasiQuoter
@@ -28,6 +30,18 @@ lit = QuasiQuoter ((\a -> let b = rnl a in [|b|]) . filter (/= '\r')) $
28 where rnl ('\n':xs) = xs
30 where rnl ('\n':xs) = xs
29 rnl xs = xs
31 rnl xs = xs
30
32
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+
31test :: (ToString a, ToString b, ToString c)
45test :: (ToString a, ToString b, ToString c)
32 => (a -> b) -- ^ function to test
46 => (a -> b) -- ^ function to test
33 -> String -- ^ name of test case
47 -> String -- ^ name of test case