{-# LANGUAGE DeriveDataTypeable #-} module Test.Tasty.Hspec ( testCase -- * Re-exports , module Test.Hspec , Test.Tasty.TestName , Test.Tasty.TestTree ) where import Test.Hspec import Data.Typeable (Typeable) import Test.Tasty (TestName, TestTree) import Test.Tasty.Providers (IsTest(..), Result(..), singleTest) import Test.Hspec.Runner (Summary(..), hspecResult) -- | Turn an hspec @Spec@ into a tasty @TestTree@. -- -- > module AnimalsSpec (tests) where -- > -- > import Test.Tasty.Hspec -- > -- > tests :: TestTree -- > tests = testGroup "animals" -- > [ testCase "mammals" mammalsSpec -- > , testCase "birds" birdsSpec -- > ] -- > -- > mammalsSpec :: Spec -- > mammalsSpec = do -- > describe "cow" $ do -- > it "moos" $ -- > speak cow `shouldBe` "moo" -- > -- > it "eats grass" $ -- > hungryFor cow `shouldBe` "grass" -- > -- > birdsSpec :: Spec -- > birdsSpec = do -- > describe "ostrich" $ do -- > it "sticks its head in sand" $ -- > fmap (`shouldBe` InSand) getHeadState testCase :: TestName -> Spec -> TestTree testCase name = singleTest name . MySpec newtype MySpec = MySpec Spec deriving Typeable instance IsTest MySpec where run _ (MySpec spec) _ = do (Summary examples failures) <- hspecResult spec return $ Result (failures == 0) "" testOptions = return []