[fiveam-devel] patch to RESULTS-STATUS

Robert Goldman rpgoldman at sift.info
Mon Sep 10 18:53:44 UTC 2012


RESULTS-STATUS tells you if there are any non-"TEST-PASSED" results.
But it doesn't provide any way for you to get your hands on these
results.  Originally, I thought that one could simply test for them, but
the results categories aren't actually exported from FiveAM, so this is
difficult.

To make it easier to find "interesting" results, I modified
RESULTS-STATUS to return a second value.  The first value is a boolean,
as before, telling you if the tests all passed.  If they didn't, the
second value is now a list of the non-passing results.

I believe this to be a benign change from the standpoint of backward
compatibility, since anyone just looking for a single return value will
get the same boolean value as before.

It's possible that the actual value --- not interpreted as a boolean ---
will be different, since the new code uses REMOVE-IF instead of EVERY.
But if a caller takes information out of the results list in a function
whose documentation proclaims it to be boolean, I submit that the caller
is doing so at his/her own risk!

Proposed patch is attached.

Best,
Robert

-------------- next part --------------
Index: src/run.lisp
===================================================================
--- src/run.lisp	(revision 989)
+++ src/run.lisp	(revision 990)
@@ -115,10 +115,13 @@ (defmethod resolve-dependencies ((depend
 (defun results-status (result-list)
   "Given a list of test results (generated while running a test)
   return true if all of the results are of type TEST-PASSED,
-  faile otherwise."
-  (every (lambda (res)
+  fail otherwise.
+  Returns a second value, which is the set of non-passed tests."
+  (let ((non-passed
+         (remove-if #'(lambda (res)
 	   (typep res 'test-passed))
-	 result-list))
+                        result-list)))
+    (values (not non-passed) non-passed)))
 
 (defun return-result-list (test-lambda)
   "Run the test function TEST-LAMBDA and return a list of all



More information about the fiveam-devel mailing list