module BuildBox.Quirk
	(Quirk	(..))
where
import System.Exit
import BuildBox.Aspect.Units
import BuildBox.Pretty


-- | A Quirk is some extended information about a benchmark or test that isn't represented
--   by an `Aspect`. These are singleton pieces of data where it doesn't make sense to 
--   average them or compute other statistics.
data Quirk
	= QuirkSucceeded
	| QuirkFailed
	| QuirkExitCode	ExitCode
	| QuirkTimeout	Seconds
	deriving (Eq, Ord, Read, Show)
	
instance Pretty Quirk where
 ppr quirk
  = case quirk of
	QuirkSucceeded	
	 -> text "succeeded"

	QuirkFailed
	 -> text "failed"

	QuirkExitCode ExitSuccess
	 -> text "exited successfully"

	QuirkExitCode (ExitFailure code)
	 -> text "exited with failure code " <> int code
	
	QuirkTimeout seconds
	 -> text "timed out after " <> ppr seconds