Cabal-2.2.0.0: Distribution/Types/TestSuiteInterface.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
module Distribution.Types.TestSuiteInterface (
TestSuiteInterface(..),
) where
import Prelude ()
import Distribution.Compat.Prelude
import Distribution.Types.TestType
import Distribution.ModuleName
import Distribution.Version
-- | The test suite interfaces that are currently defined. Each test suite must
-- specify which interface it supports.
--
-- More interfaces may be defined in future, either new revisions or totally
-- new interfaces.
--
data TestSuiteInterface =
-- | Test interface \"exitcode-stdio-1.0\". The test-suite takes the form
-- of an executable. It returns a zero exit code for success, non-zero for
-- failure. The stdout and stderr channels may be logged. It takes no
-- command line parameters and nothing on stdin.
--
TestSuiteExeV10 Version FilePath
-- | Test interface \"detailed-0.9\". The test-suite takes the form of a
-- library containing a designated module that exports \"tests :: [Test]\".
--
| TestSuiteLibV09 Version ModuleName
-- | A test suite that does not conform to one of the above interfaces for
-- the given reason (e.g. unknown test type).
--
| TestSuiteUnsupported TestType
deriving (Eq, Generic, Read, Show, Typeable, Data)
instance Binary TestSuiteInterface
instance NFData TestSuiteInterface where rnf = genericRnf
instance Monoid TestSuiteInterface where
mempty = TestSuiteUnsupported (TestTypeUnknown mempty nullVersion)
mappend = (<>)
instance Semigroup TestSuiteInterface where
a <> (TestSuiteUnsupported _) = a
_ <> b = b