hspec-core 2.1.5 → 2.1.6
raw patch · 20 files changed
+128/−77 lines, 20 filesdep ~HUnitdep ~QuickCheckdep ~ansi-terminalPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: HUnit, QuickCheck, ansi-terminal, async, base, hspec-meta, transformers
API changes (from Hackage documentation)
Files
- LICENSE +1/−1
- hspec-core.cabal +34/−40
- src/Test/Hspec/Compat.hs +35/−0
- src/Test/Hspec/Config.hs +4/−1
- src/Test/Hspec/Core/Formatters.hs +3/−2
- src/Test/Hspec/Core/Formatters/Internal.hs +3/−2
- src/Test/Hspec/Core/QuickCheckUtil.hs +3/−2
- src/Test/Hspec/Core/Runner.hs +3/−3
- src/Test/Hspec/Core/Runner/Eval.hs +4/−2
- src/Test/Hspec/Core/Spec/Monad.hs +3/−1
- src/Test/Hspec/Core/Tree.hs +2/−4
- src/Test/Hspec/Options.hs +3/−3
- test/Helper.hs +4/−3
- test/Mock.hs +2/−2
- test/Test/Hspec/CompatSpec.hs +0/−2
- test/Test/Hspec/Core/ExampleSpec.hs +0/−1
- test/Test/Hspec/Core/FormattersSpec.hs +1/−0
- test/Test/Hspec/Core/HooksSpec.hs +1/−1
- test/Test/Hspec/Core/RunnerSpec.hs +21/−7
- test/Test/Hspec/Core/SpecSpec.hs +1/−0
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2011-2014 Simon Hengel <sol@typeful.net>+Copyright (c) 2011-2015 Simon Hengel <sol@typeful.net> Copyright (c) 2011-2012 Trystan Spangler <trystan.s@comcast.net> Copyright (c) 2011-2011 Greg Weber <greg@gregweber.info>
hspec-core.cabal view
@@ -1,8 +1,8 @@ name: hspec-core-version: 2.1.5+version: 2.1.6 license: MIT license-file: LICENSE-copyright: (c) 2011-2014 Simon Hengel,+copyright: (c) 2011-2015 Simon Hengel, (c) 2011-2012 Trystan Spangler, (c) 2011 Greg Weber maintainer: Simon Hengel <sol@typeful.net>@@ -22,10 +22,26 @@ subdir: hspec-core library- ghc-options:- -Wall- hs-source-dirs:- src+ hs-source-dirs: src+ exposed-modules:+ Test.Hspec.Core.Spec+ Test.Hspec.Core.Hooks+ Test.Hspec.Core.Runner+ Test.Hspec.Core.Formatters+ Test.Hspec.Core.QuickCheck+ Test.Hspec.Core.Util+ other-modules:+ Test.Hspec.Compat+ Test.Hspec.Config+ Test.Hspec.Core.Example+ Test.Hspec.Core.Formatters.Internal+ Test.Hspec.Core.QuickCheckUtil+ Test.Hspec.Core.Runner.Eval+ Test.Hspec.Core.Spec.Monad+ Test.Hspec.Core.Tree+ Test.Hspec.FailureReport+ Test.Hspec.Options+ Test.Hspec.Timer build-depends: base >= 4.3 && < 5 , random@@ -40,34 +56,13 @@ , quickcheck-io , hspec-expectations , async >= 2- exposed-modules:- Test.Hspec.Core.Spec- Test.Hspec.Core.Hooks- Test.Hspec.Core.Runner- Test.Hspec.Core.Formatters- Test.Hspec.Core.QuickCheck- Test.Hspec.Core.Util- other-modules:- Test.Hspec.Compat- Test.Hspec.Core.Example- Test.Hspec.Core.Tree- Test.Hspec.Core.Spec.Monad- Test.Hspec.Core.QuickCheckUtil- Test.Hspec.Config- Test.Hspec.Options- Test.Hspec.FailureReport- Test.Hspec.Core.Runner.Eval- Test.Hspec.Core.Formatters.Internal- Test.Hspec.Timer+ ghc-options: -Wall default-language: Haskell2010 test-suite spec- type:- exitcode-stdio-1.0- hs-source-dirs:- src, test- main-is:- Spec.hs+ type: exitcode-stdio-1.0+ hs-source-dirs: test, src+ main-is: Spec.hs other-modules: Helper Mock@@ -82,24 +77,23 @@ Test.Hspec.FailureReportSpec Test.Hspec.OptionsSpec Test.Hspec.TimerSpec- ghc-options:- -Wall build-depends:- base == 4.*+ base >= 4.3 && < 5 , random , tf-random , setenv- , ansi-terminal+ , ansi-terminal >= 0.5 , time- , transformers+ , transformers >= 0.2.2.0 , deepseq- , HUnit- , QuickCheck+ , HUnit >= 1.2.5+ , QuickCheck >= 2.5.1 , quickcheck-io , hspec-expectations- , async+ , async >= 2 - , hspec-meta >= 1.12+ , hspec-meta >= 2.1.5 , silently >= 1.2.4 , process+ ghc-options: -Wall default-language: Haskell2010
src/Test/Hspec/Compat.hs view
@@ -5,10 +5,45 @@ , readMaybe , lookupEnv , module Data.IORef++, module Prelude+, module Control.Applicative+, module Data.Foldable+, module Data.Traversable+, module Data.Monoid+ #if !MIN_VERSION_base(4,6,0) , modifyIORef' #endif ) where++import Control.Applicative+import Data.Foldable+import Data.Traversable+import Data.Monoid++import Prelude hiding (+ all+ , and+ , any+ , concat+ , concatMap+ , elem+ , foldl+ , foldl1+ , foldr+ , foldr1+ , mapM+ , mapM_+ , maximum+ , minimum+ , notElem+ , or+ , product+ , sequence+ , sequence_+ , sum+ ) #if !MIN_VERSION_base(4,3,0) import Control.Monad.Trans.Error () -- for Monad (Either e)
src/Test/Hspec/Config.hs view
@@ -42,7 +42,10 @@ matchFilter = configFilterPredicate opts - rerunFilter = flip elem . failureReportPaths <$> mFailureReport+ rerunFilter = case failureReportPaths <$> mFailureReport of+ Just [] -> Nothing+ Just xs -> Just (`elem` xs)+ Nothing -> Nothing configQuickCheckArgs :: Config -> QC.Args configQuickCheckArgs c = qcArgs
src/Test/Hspec/Core/Formatters.hs view
@@ -49,13 +49,14 @@ , formatException ) where +import Prelude ()+import Test.Hspec.Compat+ import Data.Maybe import Test.Hspec.Core.Util import Test.Hspec.Core.Spec (Location(..), LocationAccuracy(..)) import Text.Printf import Control.Monad (when, unless)-import Data.Foldable (forM_)-import Control.Applicative import System.IO (hPutStr, hFlush) -- We use an explicit import list for "Test.Hspec.Formatters.Internal", to make
src/Test/Hspec/Core/Formatters/Internal.hs view
@@ -35,10 +35,12 @@ , finally_ ) where +import Prelude ()+import Test.Hspec.Compat+ import qualified System.IO as IO import System.IO (Handle) import Control.Monad-import Control.Applicative import Control.Exception (SomeException, AsyncException(..), bracket_, try, throwIO) import System.Console.ANSI import Control.Monad.Trans.State hiding (gets, modify)@@ -47,7 +49,6 @@ import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime) import Test.Hspec.Core.Util (Path)-import Test.Hspec.Compat import Test.Hspec.Core.Spec (Progress, Location) -- | A lifted version of `Control.Monad.Trans.State.gets`
src/Test/Hspec/Core/QuickCheckUtil.hs view
@@ -1,9 +1,10 @@ {-# LANGUAGE CPP #-} module Test.Hspec.Core.QuickCheckUtil where -import Control.Applicative+import Prelude ()+import Test.Hspec.Compat+ import Data.Int-import Data.IORef import Test.QuickCheck hiding (Result(..)) import Test.QuickCheck as QC import Test.QuickCheck.Property hiding (Result(..))
src/Test/Hspec/Core/Runner.hs view
@@ -16,9 +16,10 @@ , configAddFilter ) where +import Prelude ()+import Test.Hspec.Compat+ import Control.Monad-import Control.Applicative-import Data.Monoid import Data.Maybe import System.IO import System.Environment (getProgName, getArgs, withArgs)@@ -29,7 +30,6 @@ import qualified Test.QuickCheck as QC import Control.Monad.IO.Class (liftIO) -import Test.Hspec.Compat (lookupEnv) import Test.Hspec.Core.Util (Path) import Test.Hspec.Core.Spec import Test.Hspec.Config
src/Test/Hspec/Core/Runner/Eval.hs view
@@ -1,7 +1,9 @@ module Test.Hspec.Core.Runner.Eval (runFormatter) where -import Control.Applicative-import Control.Monad+import Prelude ()+import Test.Hspec.Compat++import Control.Monad (unless, when) import qualified Control.Exception as E import Control.Concurrent import System.IO (Handle)
src/Test/Hspec/Core/Spec/Monad.hs view
@@ -13,7 +13,9 @@ , modifyParams ) where -import Control.Applicative+import Prelude ()+import Test.Hspec.Compat+ import Control.Monad.Trans.Writer import Control.Monad.IO.Class (liftIO)
src/Test/Hspec/Core/Tree.hs view
@@ -11,10 +11,8 @@ , specItem ) where -import Control.Applicative-import Data.Foldable-import Data.Traversable-import Data.Monoid+import Prelude ()+import Test.Hspec.Compat import Test.Hspec.Core.Example
src/Test/Hspec/Options.hs view
@@ -6,14 +6,14 @@ , parseOptions ) where -import Control.Applicative-import Data.List+import Prelude ()+import Test.Hspec.Compat+ import System.IO import System.Exit import System.Console.GetOpt import Test.Hspec.Core.Formatters-import Test.Hspec.Compat import Test.Hspec.Core.Util import Test.Hspec.Core.Example (Params(..), defaultParams)
test/Helper.hs view
@@ -1,7 +1,7 @@ module Helper ( module Test.Hspec.Meta+, module Test.Hspec.Compat , module Test.QuickCheck-, module Control.Applicative , module System.IO.Silently , sleep , timeout@@ -20,11 +20,12 @@ , shouldUseArgs ) where +import Prelude ()+import Test.Hspec.Compat+ import Data.List import Data.Char-import Data.IORef import Control.Monad-import Control.Applicative import System.Environment (withArgs) import System.Exit import Control.Concurrent
test/Mock.hs view
@@ -1,7 +1,7 @@ module Mock where -import Control.Applicative-import Data.IORef+import Prelude ()+import Test.Hspec.Compat newtype Mock = Mock (IORef Int)
test/Test/Hspec/CompatSpec.hs view
@@ -3,8 +3,6 @@ import Helper import System.SetEnv--import Test.Hspec.Compat import Data.Typeable data SomeType = SomeType
test/Test/Hspec/Core/ExampleSpec.hs view
@@ -4,7 +4,6 @@ import Helper import Mock import Data.List-import Data.IORef import qualified Test.Hspec.Core.Example as H import qualified Test.Hspec.Core.Spec as H
test/Test/Hspec/Core/FormattersSpec.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CPP #-} module Test.Hspec.Core.FormattersSpec (main, spec) where +import Prelude () import Helper import qualified Test.Hspec.Core.Spec as H
test/Test/Hspec/Core/HooksSpec.hs view
@@ -1,7 +1,7 @@ module Test.Hspec.Core.HooksSpec (main, spec) where +import Prelude () import Helper-import Data.IORef import qualified Test.Hspec.Core.Spec as H import qualified Test.Hspec.Core.Runner as H
test/Test/Hspec/Core/RunnerSpec.hs view
@@ -1,15 +1,16 @@ module Test.Hspec.Core.RunnerSpec (main, spec) where +import Prelude () import Helper+ import System.IO (stderr)-import Control.Monad+import Control.Monad (replicateM_) import System.Environment (withArgs, withProgName, getArgs) import System.Exit import Control.Concurrent import qualified Control.Exception as E import Mock import System.SetEnv-import Test.Hspec.Compat import Test.Hspec.FailureReport (FailureReport(..)) import qualified Test.Hspec.Core.Spec as H@@ -95,33 +96,46 @@ it "reuses the same seed" $ do r <- runPropFoo ["--seed", "42"]- runPropFoo ["-r"] `shouldReturn` r+ runPropFoo ["--rerun"] `shouldReturn` r forM_ quickCheckOptions $ \(flag, accessor) -> do it ("reuses same " ++ flag) $ do [flag, "23"] `shouldUseArgs` ((== 23) . accessor) ["--rerun"] `shouldUseArgs` ((== 23) . accessor) + context "when no examples failed previously" $ do+ it "runs all examples" $ do+ let run = capture_ . H.hspec $ do+ H.it "example 1" True+ H.it "example 2" True+ H.it "example 3" True++ r0 <- run+ r0 `shouldContain` "3 examples, 0 failures"++ r1 <- withArgs ["--rerun"] run+ r1 `shouldContain` "3 examples, 0 failures"+ context "when there is no failure report in the environment" $ do it "runs everything" $ do unsetEnv "HSPEC_FAILURES"- r <- hSilence [stderr] $ withArgs ["-r"] runSpec+ r <- hSilence [stderr] $ withArgs ["--rerun"] runSpec r `shouldSatisfy` elem "5 examples, 3 failures" it "prints a warning to stderr" $ do unsetEnv "HSPEC_FAILURES"- r <- hCapture_ [stderr] $ withArgs ["-r"] runSpec+ r <- hCapture_ [stderr] $ withArgs ["--rerun"] runSpec r `shouldBe` "WARNING: Could not read environment variable HSPEC_FAILURES; `--rerun' is ignored!\n" context "when parsing of failure report fails" $ do it "runs everything" $ do setEnv "HSPEC_FAILURES" "some invalid report"- r <- hSilence [stderr] $ withArgs ["-r"] runSpec+ r <- hSilence [stderr] $ withArgs ["--rerun"] runSpec r `shouldSatisfy` elem "5 examples, 3 failures" it "prints a warning to stderr" $ do setEnv "HSPEC_FAILURES" "some invalid report"- r <- hCapture_ [stderr] $ withArgs ["-r"] runSpec+ r <- hCapture_ [stderr] $ withArgs ["--rerun"] runSpec r `shouldBe` "WARNING: Could not read environment variable HSPEC_FAILURES; `--rerun' is ignored!\n"
test/Test/Hspec/Core/SpecSpec.hs view
@@ -1,5 +1,6 @@ module Test.Hspec.Core.SpecSpec (main, spec) where +import Prelude () import Helper import Test.Hspec.Core.Spec (Item(..), Result(..))