File: FailureReportSpec.hs

package info (click to toggle)
haskell-hspec-core 2.11.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 656 kB
  • sloc: haskell: 8,945; makefile: 5
file content (48 lines) | stat: -rw-r--r-- 1,810 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
module Test.Hspec.Core.FailureReportSpec (spec) where

import           Prelude ()
import           Helper

import           System.IO
import           Test.Hspec.Core.FailureReport
import           Test.Hspec.Core.Config

spec :: Spec
spec = do
  describe "writeFailureReport" $ do
    it "prints a warning on unexpected exceptions" $ do
      r <- hCapture_ [stderr] $ writeFailureReport defaultConfig (throw (ErrorCall "some error"))
      r `shouldBe` "WARNING: Could not write environment variable HSPEC_FAILURES (some error)\n"

  describe "readFailureReport" $ do
    context "when configFailureReport is specified" $ do
      let
        file = "report"
        config = defaultConfig {configFailureReport = Just file}
        report = FailureReport {
            failureReportSeed = 23
          , failureReportMaxSuccess = 42
          , failureReportMaxSize = 65
          , failureReportMaxDiscardRatio = 123
          , failureReportPaths = [(["foo", "bar"], "baz")]
          }
      it "reads a failure report from a file" $ do
        inTempDirectory $ do
          writeFailureReport config report
          readFailureReport config `shouldReturn` Just report

      context "when file does not exist" $ do
        it "returns Nothing" $ do
          inTempDirectory $ do
            readFailureReport config `shouldReturn` Nothing

      context "when file is malformed" $ do
        it "returns Nothing" $ do
          hSilence [stderr] $ inTempDirectory $ do
            writeFile file "foo"
            readFailureReport config `shouldReturn` Nothing

        it "prints a warning" $ do
          inTempDirectory $ do
            writeFile file "foo"
            hCapture_ [stderr] (readFailureReport config) `shouldReturn` "WARNING: Could not read failure report from file \"report\"!\n"