(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)