Tasty Travis provides fancy Tasty test output on Travis CI.
It allows you get coloured test output, folding and collapsing groups of tests, and hiding the output of successful tests.
Here's what an example test.hs
might look:
import Data.List
import Data.Ord
import Data.Tagged (Tagged)
import Data.Typeable (Typeable)
import Options.Applicative (switch, long, help)
import Test.Tasty
import Test.Tasty.Options
import Test.Tasty.Travis (travisTestReporter, defaultConfig)
import Test.Tasty.HUnit
newtype EnableTravis = EnableTravis Bool
deriving (Eq, Ord, Typeable)
instance IsOption EnableTravis where
defaultValue = EnableTravis False
parseValue = fmap EnableTravis . safeRead
optionName = return "enable-travis"
optionHelp = return "Run Travis tests."
optionCLParser =
fmap EnableTravis $
switch
( long (untag (optionName :: Tagged EnableTravis String))
<> help (untag (optionHelp :: Tagged EnableTravis String))
)
main = travisTestReporter cfg [] tests
where
cfg = defaultConfig { travisTestOptions = setOption (EnableTravis True) }
tests :: TestTree
tests = testGroup "Unit tests"
[ testCase "List comparison (different length)" $
[1, 2, 3] `compare` [1,2] @?= GT
-- the following test does not hold
, testCase "List comparison (same length)" $
[1, 2, 3] `compare` [1,2,2] @?= LT
, askOption $ \(EnableTravis enable) ->
if enable then travisTests else testGroup "" []
]
travisTests :: TestTree
travisTests = testGroup "Travis" [ {- Travis tests here -} ]