packages feed

xml-prettify-text-1.0.0.1: test/PrettyPrintGoldenTest.hs

{-# LANGUAGE OverloadedStrings #-}

module PrettyPrintGoldenTest
  ( prettyPrintGoldentTest,
  )
where

import qualified Data.Text.IO as TIO
import System.FilePath (normalise, replaceExtension, takeBaseName)
import Test.Tasty
import Test.Tasty.Golden
import Text.XML.Prettify

prettyPrintGoldentTest :: IO [TestTree]
prettyPrintGoldentTest = sequence [goldenPrettyPrint]

goldenPrettyPrint :: IO TestTree
goldenPrettyPrint =
  testGroup "Pretty print XML" . map createTest
    <$> findByExtension [".xml"] testsDir
  where
    testsDir = normalise "data/tests"

createTest :: [Char] -> TestTree
createTest testFile =
  goldenVsFile
    (takeBaseName testFile)
    goldenf
    outf
    testAction
  where
    goldenf = replaceExtension testFile ".out.golden"
    outf = replaceExtension testFile ".out"
    testAction = do
      prettyPrintedXml <- prettyPrintXmlDefault <$> TIO.readFile testFile
      TIO.writeFile outf prettyPrintedXml