diff --git a/hspec.cabal b/hspec.cabal
--- a/hspec.cabal
+++ b/hspec.cabal
@@ -1,5 +1,5 @@
 name:             hspec
-version:          1.9.2
+version:          1.9.3
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2011-2014 Simon Hengel,
@@ -83,6 +83,7 @@
       Helper
       Test.HspecSpec
       Test.Hspec.CompatSpec
+      Test.Hspec.Core.QuickCheckUtilSpec
       Test.Hspec.Core.TypeSpec
       Test.Hspec.FailureReportSpec
       Test.Hspec.FormattersSpec
diff --git a/src/Test/Hspec/Runner/Eval.hs b/src/Test/Hspec/Runner/Eval.hs
--- a/src/Test/Hspec/Runner/Eval.hs
+++ b/src/Test/Hspec/Runner/Eval.hs
@@ -18,8 +18,8 @@
 import           Data.Time.Clock.POSIX
 
 data Tree a
-  = Node String [Tree a]
-  | Leaf String a
+  = Node! String [Tree a]
+  | Leaf! String a
   deriving (Eq, Show, Functor)
 
 toTree :: SpecTree -> Tree Item
diff --git a/test/Test/Hspec/Core/QuickCheckUtilSpec.hs b/test/Test/Hspec/Core/QuickCheckUtilSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Hspec/Core/QuickCheckUtilSpec.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -fno-warn-missing-fields #-}
+module Test.Hspec.Core.QuickCheckUtilSpec (main, spec) where
+
+import           Helper
+
+import           Test.QuickCheck
+import           Test.Hspec.Core.QuickCheckUtil
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = do
+  describe "formatNumbers" $ do
+    it "includes number of tests" $ do
+      formatNumbers (failure 1 0) `shouldBe` "(after 1 test)"
+
+    it "pluralizes number of tests" $ do
+      formatNumbers (failure 3 0) `shouldBe` "(after 3 tests)"
+
+    it "includes number of shrinks" $ do
+      formatNumbers (failure 3 1) `shouldBe` "(after 3 tests and 1 shrink)"
+
+    it "pluralizes number of shrinks" $ do
+      formatNumbers (failure 3 3) `shouldBe` "(after 3 tests and 3 shrinks)"
+  where
+    failure tests shrinks = Failure {
+      numTests = tests
+    , numShrinks = shrinks
+    }
