{-# LANGUAGE TemplateHaskell #-} module Inspection ( tests ) where -- cabal import qualified Distribution.TestSuite as Cabal -- inspection-testing import qualified Test.Inspection as Inspection ( Result(..) ) -- generic-labels-test import qualified ShouldCompile.Adapt.RRR as Adapt.RRR import qualified ShouldCompile.Adapt.TTR as Adapt.TTR import qualified ShouldCompile.Adapt.TTT as Adapt.TTT import qualified ShouldCompile.Adapt.SingletonArg as Adapt.SingletonArg import qualified ShouldCompile.Adapt.SingletonArgOpt as Adapt.SingletonArgOpt import qualified ShouldCompile.Adapt.SingletonOpt as Adapt.SingletonOpt import qualified ShouldCompile.Inject.Basic as Inject.Basic import qualified ShouldCompile.Inject.PolymorphicR as Inject.PolymorphicR import qualified ShouldCompile.Project.Basic as Project.Basic import qualified ShouldCompile.Project.PolymorphicR as Project.PolymorphicR import qualified ShouldCompile.Project.PolymorphicT as Project.PolymorphicT -------------------------------------------------------------------------------- -- Inspection tests. tests :: IO [ Cabal.Test ] tests = pure $ map mkCabalTest inspectionResults inspectionResults :: [ ( String, Inspection.Result ) ] inspectionResults = [ ( "Adapt.RRR", Adapt.RRR.result ) , ( "Adapt.TTR", Adapt.TTR.result ) , ( "Adapt.TTT", Adapt.TTT.result ) , ( "Adapt.SingletonArg" , Adapt.SingletonArg.result ) , ( "Adapt.SingletonArgOpt", Adapt.SingletonArgOpt.result ) , ( "Adapt.SingletonOpt" , Adapt.SingletonOpt.result ) , ( "Inject.Basic", Inject.Basic.result ) , ( "Inject.PolymorphicR", Inject.PolymorphicR.result ) , ( "Project.Basic", Project.Basic.result ) , ( "Project.PolymorphicR", Project.PolymorphicR.result ) , ( "Project.PolymorphicT", Project.PolymorphicT.result ) ] -------------------------------------------------------------------------------- -- Converting to 'Cabal' test types. mkCabalTest :: ( String, Inspection.Result ) -> Cabal.Test mkCabalTest ( testName, inspectionResult ) = Cabal.Test $ Cabal.TestInstance { Cabal.run = pure . Cabal.Finished . cabalResult $ inspectionResult , Cabal.name = testName , Cabal.tags = [] , Cabal.options = [] , Cabal.setOption = \ _ _ -> Left "Test does not have any options." } cabalResult :: Inspection.Result -> Cabal.Result cabalResult ( Inspection.Failure err ) = Cabal.Error err cabalResult _ = Cabal.Pass