Skip to content

Commit

Permalink
Separate return code from reporter
Browse files Browse the repository at this point in the history
The reporter should not contain anything that affects the running of
the tests.  Setting buttercup-reporter to 'ignore should just produce
no output.  It shall be possible to chain two reporters without
exiting when the first reporter reaches buttercup-done.
  • Loading branch information
snogge authored and jorgenschaefer committed Oct 12, 2018
1 parent 7cea4c6 commit b410c78
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
12 changes: 5 additions & 7 deletions buttercup.el
Original file line number Diff line number Diff line change
Expand Up @@ -1350,7 +1350,9 @@ A suite must be defined within a Markdown \"lisp\" code block."
(progn
(funcall buttercup-reporter 'buttercup-started buttercup-suites)
(mapc #'buttercup--run-suite buttercup-suites)
(funcall buttercup-reporter 'buttercup-done buttercup-suites))
(funcall buttercup-reporter 'buttercup-done buttercup-suites)
(when (> (buttercup-suites-total-specs-failed buttercup-suites) 0)
(error "")))
(error "No suites defined")))

(defvar buttercup--before-each nil
Expand Down Expand Up @@ -1542,9 +1544,7 @@ EVENT and ARG are described in `buttercup-reporter'."
(buttercup--print "Ran %s specs, %s failed, in %.1f seconds.\n"
defined
failed
duration))
(when (> failed 0)
(error ""))))
duration))))

(_
(error "Unknown event %s" event)))))
Expand Down Expand Up @@ -1628,9 +1628,7 @@ EVENT and ARG are described in `buttercup-reporter'."
", in %.1f seconds.\n")
defined
failed
duration))
(when (> failed 0)
(error ""))))
duration))))

(_
;; Fall through to buttercup-reporter-batch implementation.
Expand Down
8 changes: 6 additions & 2 deletions tests/test-buttercup.el
Original file line number Diff line number Diff line change
Expand Up @@ -979,11 +979,11 @@
(it "should handle the end event"
(buttercup-reporter-batch 'buttercup-done nil))

(it "should raise an error if at least one spec failed"
(it "should not raise any error even if a spec failed"
(setf (buttercup-spec-status spec) 'failed)

(expect (buttercup-reporter-batch 'buttercup-done (list spec))
:to-throw)))
:not :to-throw)))

(describe "on an unknown event"
(it "should raise an error"
Expand All @@ -1006,6 +1006,10 @@
(buttercup-suite-add-child child-suite spec)
(spy-on 'reporter)
(spy-on 'runner))
(it "should raise an error if at least one spec failed"
(setf (buttercup-spec-status spec) 'failed)
(cl-letf (((symbol-function 'buttercup--run-suite) #'ignore))
(expect (buttercup-run) :to-throw)))
(it "should call the reporter twice with events buttercup-started and -done"
(cl-letf (((symbol-function 'buttercup--run-suite) #'ignore))
(expect (buttercup-run) :not :to-throw)
Expand Down

0 comments on commit b410c78

Please sign in to comment.