packages feed

language-hcl-0.1.1.0: bench/HCLBenchmark.hs

import           Control.Arrow    ((>>>))
import           Control.Monad
import           Criterion.Main
import           Data.HCL
import qualified Data.Text.IO     as Text (readFile)
import           System.Directory (getDirectoryContents)
import           System.FilePath  (takeExtension, (</>))

main :: IO ()
main = do
    allFixtures <-
        filter (/= "unterminated_brace.hcl") .
        filter (/= "unterminated_block_comment.hcl") .
        filter (/= "multiline_no_marker.hcl") .
        filter (/= "multiline_bad.hcl") .
        filter (takeExtension >>> (== ".hcl")) <$>
        getDirectoryContents "./test-fixtures"

    bs <- forM allFixtures $ \fixture -> do
        print fixture
        input <- Text.readFile ("./test-fixtures" </> fixture)
        input `seq` return ()
        return $ bench fixture $ nf
            (\i -> let Right h = parseHCL "" i in h) input

    defaultMain [ bgroup "parseHCL" bs
                ]