From c65af7d1a2f35cbfd1235df2960f7156d38e8f92 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 15 Sep 2019 09:06:26 -0700 Subject: FB2 reader test: better diagnostics on failure. --- test/Tests/Readers/FB2.hs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'test') 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) -- cgit v1.2.3