hspec-slow: Find slow test cases

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Records and prints out slow Hspec tests


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.2.0.0, 0.2.0.1
Change log Changelog.md
Dependencies base (>=4.7 && <5), hspec, hspec-core, mtl, stm, time, transformers [details]
License BSD-3-Clause
Copyright 2016 Bob Long
Author Bob Long
Maintainer robertjflong@gmail.com
Category Testing
Home page https://github.com/bobjflong/hspec-slow#readme
Source repo head: git clone https://github.com/bobjflong/hspec-slow
Uploaded by Jappie at 2020-11-26T10:25:27Z

Modules

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for hspec-slow-0.2.0.0

[back to package description]

hspec-slow

Track and display slow specs in Hspec runs.

Example spec

main :: IO ()
main = do
  conf <- configure 1 -- Track specs that take longer than 1s
  timedHspec conf $ \it ->
    describe "Main" $ do
      it "should foo" $ do
        threadDelay 3000000
        1 `shouldBe` 1
      it "should bar" $ do
        threadDelay 1000
        1 `shouldBe` 1
      it "should baz" $ do
        threadDelay 4000000
        1 `shouldBe` 1

Example Output

Main
  should foo
  should bar
  should baz
Slow examples:
3.002925s: should foo
4.006186s: should baz

Finished in 7.0141 seconds
3 examples, 0 failures

Parallel specs

Parallel specs are supported. They are run similarly to above:

timedHspecParallel conf $ \it -> do
  -- ...

Output:

Main
  should foo
  should bar
  should baz
Slow examples:
3.005728s: should foo
4.00143s: should baz

Finished in 4.0024 seconds
3 examples, 0 failures

hspec slow everything

Main.hs:

module Main where

import qualified Spec
import Test.Hspec.Slow
import Test.Hspec(hspec)
import ClassyPrelude

main :: IO ()
main = do
  config <- configure 2
  hspec $ timeThese config Spec.spec

Spec.hs:

{-# OPTIONS_GHC -fno-warn-implicit-prelude #-}
{-# OPTIONS_GHC -F -pgmF hspec-discover -optF --module-name=Spec #-}