Better invocation recording.
[cl-mock.git] / README.md
index 72316e8..5cbf824 100644 (file)
--- a/README.md
+++ b/README.md
@@ -2,13 +2,22 @@
 
 CL-MOCK - Mocking functions.
 
-Copyright (C) 2013-14 Olof-Joachim Frahm
+Copyright (C) 2013-15 Olof-Joachim Frahm
 
 Release under a Simplified BSD license.
 
 Working, but unfinished.
 
-Should be portable.
+[![Build Status](https://travis-ci.org/Ferada/cl-mock.svg?branch=master)](https://travis-ci.org/Ferada/cl-mock)
+
+Portable to at least ABCL, Allegro CL (with one problem with inlining
+settings), SBCL, CCL and CLISP.  CMUCL possibly, but not tested on
+Travis CI.  ECL fails on Travis CI ([`OPTIMA`][3] fails there as well),
+but runs successfully on my own machine, so YMMV.  See the detailed
+reports at
+[https://travis-ci.org/Ferada/cl-mock](https://travis-ci.org/Ferada/cl-mock)
+for more information and [`CL-TRAVIS`][5], and [`.travis.yml`][6] for the
+setup.
 
 
 # INTRODUCTION
@@ -42,7 +51,9 @@ dynamic function rebinding):
 
     > (declaim (notinline foo bar))
     > (defun foo () 'foo)
-    > (defun bar () 'bar)
+    > (defun bar (&rest args)
+    >   (declare (ignore args))
+    >   'bar)
     > (with-mocks ()
     >   (answer (foo 1) 42)
     >   (answer foo 23)
@@ -78,6 +89,21 @@ function call will fail and that error is propagated upwards.
 the list, which (as of now) isn't available via `ANSWER` (and should be
 treated as subject to change anyway).
 
+Should you wish to run the previously defined function, use the function
+`CALL-PREVIOUS`.  If no arguments are passed it will use the current
+arguments from `*ARGUMENTS*`, if any.  Otherwise it will be called with
+the passed arguments instead.  For cases where explicitely calling it
+with no arguments is necessary, using `(funcall *previous*)` is still
+possible as well.
+
+    > (with-mocks ()
+    >   (answer foo `(was originally ,(funcall *previous*)))
+    >   (answer bar `(was originally ,(call-previous)))
+    >   (values
+    >    (foo "hello")
+    >    (bar "hello")))
+    > => (WAS ORIGINALLY FOO) (WAS ORIGINALLY BAR)
+
 The function `INVOCATIONS` may be used to retrieve all recorded
 invocations of mocks (so far); the optional argument can be used to
 filter for a particular name:
@@ -174,3 +200,5 @@ standard `PROG`:
 [2]: http://common-lisp.net/project/fiveam/
 [3]: https://github.com/m2ym/optima
 [4]: https://github.com/gschjetne/eclastic
+[5]: https://github.com/luismbo/cl-travis
+[6]: https://raw.githubusercontent.com/Ferada/cl-mock/master/.travis.yml