Cabal-syntax-3.12.0.0: src/Distribution/Types/TestType.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Distribution.Types.TestType
( TestType (..)
, knownTestTypes
, testTypeExe
, testTypeLib
) where
import Distribution.Compat.Prelude
import Distribution.Version
import Prelude ()
import Distribution.Parsec
import Distribution.Pretty
import Text.PrettyPrint (char, text)
-- | The \"test-type\" field in the test suite stanza.
data TestType
= -- | \"type: exitcode-stdio-x.y\"
TestTypeExe Version
| -- | \"type: detailed-x.y\"
TestTypeLib Version
| -- | Some unknown test type e.g. \"type: foo\"
TestTypeUnknown String Version
deriving (Generic, Show, Read, Eq, Ord, Typeable, Data)
instance Binary TestType
instance Structured TestType
instance NFData TestType where rnf = genericRnf
knownTestTypes :: [TestType]
knownTestTypes =
[ testTypeExe
, testTypeLib
]
testTypeExe :: TestType
testTypeExe = TestTypeExe (mkVersion [1, 0])
testTypeLib :: TestType
testTypeLib = TestTypeLib (mkVersion [0, 9])
instance Pretty TestType where
pretty (TestTypeExe ver) = text "exitcode-stdio-" <<>> pretty ver
pretty (TestTypeLib ver) = text "detailed-" <<>> pretty ver
pretty (TestTypeUnknown name ver) = text name <<>> char '-' <<>> pretty ver
instance Parsec TestType where
parsec = parsecStandard $ \ver name -> case name of
"exitcode-stdio" -> TestTypeExe ver
"detailed" -> TestTypeLib ver
_ -> TestTypeUnknown name ver