packages feed

travis-meta-yaml-0.0.1.0: tests/Tests.hs

{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE RankNTypes #-}
module Main (main) where

import Data.Either.Extra
import Data.FileEmbed
import Data.Yaml
import Test.Tasty
import Test.Tasty.QuickCheck

import Travis.Meta

main :: IO ()
main = Test.Tasty.defaultMain tests

tests :: TestTree
tests = testGroup "Tests"
  [ selfTest
  , withoutMatrix
  , errorCases
  ]

selfTest :: TestTree
selfTest = testProperty "Self test" $ once $ actual === processed
  where actual     = decodeEither $(embedFile ".travis.yml")
        processed  = preprocessYaml =<< decodeEither $(embedFile ".travis.meta.yml")

withoutMatrix :: TestTree
withoutMatrix = testProperty "Self test without matrix" $ once $ actual === processed
  where actual     = decodeEither $(embedFile "fixtures/without-matrix-processed.yml")
        processed  = preprocessYaml =<< decodeEither $(embedFile "fixtures/without-matrix.yml")

errorCases :: TestTree
errorCases = testGroup "Error cases"
  [ c "matrix.include specified" $(embedFile "fixtures/matrix-include.yml")
  ]
  where c name bs = testProperty name $ once $ isLeft $ preprocess bs