module Data.Text.ParagraphLayout.PrettyShow.Golden ( goldenTest , goldenPath , actualPath , fontInfoPath ) where import Test.Hspec.Golden import System.FilePath ((<.>), ()) import Data.Text.ParagraphLayout.PrettyShow goldenPath :: FilePath -> String -> FilePath goldenPath dir name = dir name <.> "golden" actualPath :: FilePath -> String -> FilePath actualPath dir name = dir name <.> "actual" fontInfoPath :: FilePath -> String -> FilePath fontInfoPath dir name = dir name <.> "fontInfo" goldenTest :: (PrettyShow a, Show inner, Read inner) => FilePath -> (a -> inner) -> (inner -> a) -> inner -> FilePath -> Golden a goldenTest goldenDir unwrap wrap innerOutput name = Golden { output = wrap innerOutput , encodePretty = show . unwrap , writeToFile = \ path -> writeFile path . prettyShow , readFromFile = \ path -> wrap . read <$> readFile path , goldenFile = goldenPath goldenDir name , actualFile = Just (actualPath goldenDir name) , failFirstTime = True }