packages feed

aeson-jsonpath-0.3.0.0: test/Main.hs

module Main
  ( main )
  where

import qualified Data.Aeson         as JSON
import qualified Test.Hspec         as HS
import qualified Data.Text.Encoding as T
import qualified Data.Text.IO       as TIO

import Data.Either                  (fromRight)

import qualified ParserSpec
import qualified QuerySpec
import qualified ComplianceSpec
import qualified LocatedSpec
import qualified Paths_aeson_jsonpath as Paths

import ComplianceSpec   (TestSuite (..))

import Test.Hspec.Runner
import Prelude

allSpecs :: Either String TestSuite -> Spec
allSpecs cts = do
  HS.describe "Run all tests" $ do
    ParserSpec.spec
    QuerySpec.spec
    ComplianceSpec.spec (fromRight TestSuite{tests=[]} cts)
    LocatedSpec.spec

readCtsFile :: FilePath -> IO (Either String TestSuite)
readCtsFile filePath = do
  contents <- TIO.readFile filePath
  return $ JSON.eitherDecodeStrict' $ T.encodeUtf8 contents

main :: IO ()
main = do
  file <- Paths.getDataFileName "test/cts.json"
  cts <- readCtsFile file
  summary <- hspecWithResult defaultConfig 
    { configColorMode = ColorAuto
    } (allSpecs cts)
  
  putStrLn $ "Total tests: " ++ show (summaryExamples summary)
  putStrLn $ "Failures: "    ++ show (summaryFailures summary)