diff options
author | John MacFarlane <jgm@berkeley.edu> | 2019-09-15 09:06:26 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2019-09-15 09:06:38 -0700 |
commit | c65af7d1a2f35cbfd1235df2960f7156d38e8f92 (patch) | |
tree | 380a4c29754ee35447ff20a9a8bfe5c58bc7f60e /test/Tests | |
parent | 5d1a58b3d8869302c47c6e6ebb628e0ee000c92b (diff) | |
download | pandoc-c65af7d1a2f35cbfd1235df2960f7156d38e8f92.tar.gz |
FB2 reader test: better diagnostics on failure.
Diffstat (limited to 'test/Tests')
-rw-r--r-- | test/Tests/Readers/FB2.hs | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/test/Tests/Readers/FB2.hs b/test/Tests/Readers/FB2.hs index 4198b9b53..2eb713de7 100644 --- a/test/Tests/Readers/FB2.hs +++ b/test/Tests/Readers/FB2.hs @@ -15,13 +15,40 @@ module Tests.Readers.FB2 (tests) where import Prelude import Test.Tasty import Tests.Helpers -import Test.Tasty.Golden (goldenVsString) +-- import Test.Tasty.Golden (goldenVsString) +import Test.Tasty.Golden.Advanced (goldenTest) +import Text.Printf +import qualified Data.ByteString.Lazy as LBS + import qualified Data.ByteString as BS import Text.Pandoc import Text.Pandoc.UTF8 (toText, fromStringLazy) import Data.Text (Text, unpack) import System.FilePath (replaceExtension) +simpleCmp :: Eq a => String -> a -> a -> IO (Maybe String) +simpleCmp e x y = + return $ if x == y then Nothing else Just e + + +goldenVsString + :: TestName -- ^ test name + -> FilePath -- ^ path to the «golden» file (the file that contains correct output) + -> IO LBS.ByteString -- ^ action that returns a string + -> TestTree -- ^ the test verifies that the returned string is the same as the golden file contents +goldenVsString name ref act = + goldenTest + name + (BS.readFile ref) + (LBS.toStrict <$> act) + cmp + upd + where + cmp x y = simpleCmp msg x y + where + msg = printf "Test output from %s was different from %s. It was: %s" ref (show x) (show y) + upd = BS.writeFile ref + fb2ToNative :: Text -> Text fb2ToNative = purely (writeNative def{ writerTemplate = Just mempty }) . purely (readFB2 def) |