fukamachi/prove

`is-error` dumps error output to `*standard-output*`

inaimathi opened this issue · 0 comments

I'm using is-error. It correctly reports that an error was thrown, but the test report is polluted with a raw error dump in the two steps that expect errors. The erroring test cases are here. The output of the given test suite is

...
Running a test file '/home/inaimathi/quicklisp/local-projects/cl-handlers/test/handlers.lisp'
1..7

  ✓ Correctly route static URIs 
  ✓ Correctly route variable URIs 
  ✓ Correctly route variable URIs with multiple variables 
  ✓ You can type path parameters with arg-style declarations 
  ✓ You can type path parameters with both inline and arg-style declarations 

; file: /home/inaimathi/quicklisp/local-projects/cl-handlers/test/handlers.lisp
; in: DEFINE-HANDLER (A)
;     (CL-HANDLERS:DEFINE-HANDLER (CL-HANDLERS-TEST::A)
;         ((CL-HANDLERS-TEST::FOO :INTEGER) (CL-HANDLERS-TEST::FOO :INTEGER))
;       CL-HANDLERS-TEST::FOO)
; 
; caught ERROR:
;   during macroexpansion of
;   (DEFINE-HANDLER (A)
;       (# #)
;     ...).
;   Use *BREAK-ON-SIGNALS* to intercept.
;   
;    You have duplicate parameters: (FOO FOO)
; 
; compilation unit finished
;   caught 1 ERROR condition
  ✓ No duplicate declarations are allowed 

; file: /home/inaimathi/quicklisp/local-projects/cl-handlers/test/handlers.lisp
; in: DEFINE-HANDLER (A/-FOO=INTEGER/B/-FOO=INTEGER)
;     (CL-HANDLERS:DEFINE-HANDLER (CL-HANDLERS-TEST::A/-FOO=INTEGER/B/-FOO=INTEGER)
;         ((CL-HANDLERS-TEST::FOO :INTEGER))
;       CL-HANDLERS-TEST::FOO)
; 
; caught ERROR:
;   during macroexpansion of
;   (DEFINE-HANDLER (A/-FOO=INTEGER/B/-FOO=INTEGER)
;       (#)
;     ...).
;   Use *BREAK-ON-SIGNALS* to intercept.
;   
;    You have a duplicate path variable: (FOO FOO)
; 
; compilation unit finished
;   caught 1 ERROR condition
  ✓ NO duplicate declarations are allowed 

✓ 7 tests completed (1ms)
T
(#P"/home/inaimathi/quicklisp/local-projects/cl-handlers/test/trie.lisp"
 #P"/home/inaimathi/quicklisp/local-projects/cl-handlers/test/handler-internals.lisp"
 #P"/home/inaimathi/quicklisp/local-projects/cl-handlers/test/handlers.lisp")
NIL
* 

I was expecting it to output

...
Running a test file '/home/inaimathi/quicklisp/local-projects/cl-handlers/test/handlers.lisp'
1..7

  ✓ Correctly route static URIs 
  ✓ Correctly route variable URIs 
  ✓ Correctly route variable URIs with multiple variables 
  ✓ You can type path parameters with arg-style declarations 
  ✓ You can type path parameters with both inline and arg-style declarations 
  ✓ No duplicate declarations are allowed 
  ✓ NO duplicate declarations are allowed 

✓ 7 tests completed (1ms)
T
(#P"/home/inaimathi/quicklisp/local-projects/cl-handlers/test/trie.lisp"
 #P"/home/inaimathi/quicklisp/local-projects/cl-handlers/test/handler-internals.lisp"
 #P"/home/inaimathi/quicklisp/local-projects/cl-handlers/test/handlers.lisp")
NIL
* 

Since the errors are expected, showing their output doesn't really do anything but make the report output harder to scan.

This happens in SBCL 1.1.15 debian and SBCL 1.2.12 NIXOS, both in terminal and in SLIME. Same behavior observed with the default and :fiveam reporters.