diff options
author | John MacFarlane <jgm@berkeley.edu> | 2011-01-22 13:54:12 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2011-01-22 13:54:12 -0800 |
commit | 91cc03b13105db519e1812970b29ed09ce6cf816 (patch) | |
tree | f6867b564f68a5346c25d970efe4c4c8ab6de659 /tests/Tests/Helpers.hs | |
parent | 1fd5e3bcffb08533cdc97138add1a83a16110d0e (diff) |
Tests.Helpers: Added file quasiquoter.
This allows you to take expected test output from a file.
Diffstat (limited to 'tests/Tests/Helpers.hs')
-rw-r--r-- | tests/Tests/Helpers.hs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/Tests/Helpers.hs b/tests/Tests/Helpers.hs index 91243e1ce..ed67cd1e4 100644 --- a/tests/Tests/Helpers.hs +++ b/tests/Tests/Helpers.hs @@ -2,6 +2,7 @@ -- Utility functions for the test suite. module Tests.Helpers ( lit + , file , test , (=?>) , property @@ -20,6 +21,7 @@ import Text.Pandoc.Shared (normalize, defaultWriterOptions, WriterOptions(..), removeTrailingSpace) import Text.Pandoc.Writers.Native (writeNative) import Language.Haskell.TH.Quote +import Language.Haskell.TH.Syntax (Q, runIO) import qualified Test.QuickCheck.Property as QP lit :: QuasiQuoter @@ -28,6 +30,18 @@ lit = QuasiQuoter ((\a -> let b = rnl a in [|b|]) . filter (/= '\r')) $ where rnl ('\n':xs) = xs rnl xs = xs +file :: QuasiQuoter +file = quoteFile lit + +-- adapted from TH 2.5 code +quoteFile :: QuasiQuoter -> QuasiQuoter +quoteFile (QuasiQuoter { quoteExp = qe, quotePat = qp }) = + QuasiQuoter { quoteExp = get qe, quotePat = get qp } + where + get :: (String -> Q a) -> String -> Q a + get old_quoter file_name = do { file_cts <- runIO (readFile file_name) + ; old_quoter file_cts } + test :: (ToString a, ToString b, ToString c) => (a -> b) -- ^ function to test -> String -- ^ name of test case |