0.9.11.28:
[sbcl.git] / tests / debug.impure.lisp
index bd9526d..ae18ce5 100644 (file)
 (defun trace-this ()
   'ok)
 
+(defun trace-fact (n)
+  (if (zerop n)
+      1
+      (* n (trace-fact (1- n)))))
+
 (let ((out (with-output-to-string (*trace-output*)
              (trace trace-this)
              (assert (eq 'ok (trace-this)))
     (assert (search "TRACE-THIS" out))
     (assert (search "returned OK" out))))
 
+#-(and (or ppc x86) darwin)
+(with-test (:name (trace-recursive :encapsulate nil)
+            :fails-on '(or ppc sparc))
+  (let ((out (with-output-to-string (*trace-output*)
+               (trace trace-fact :encapsulate nil)
+               (assert (= 120 (trace-fact 5)))
+               (untrace))))
+    (assert (search "TRACE-FACT" out))
+    (assert (search "returned 1" out))
+    (assert (search "returned 120" out))))
+
 ;;;; test infinite error protection
 
 (defmacro nest-errors (n-levels error-form)