0.9.14.6:
[sbcl.git] / tests / debug.impure.lisp
index 12de035..b9709f2 100644 (file)
                                     (list '(flet test) #'not-optimized))))))
 
 (with-test (:name (:throw :no-such-tag)
-            :fails-on '(or (and :x86 :linux) :alpha))
+            :fails-on '(or
+                        (and :x86 (or :linux :freebsd sunos))
+                        :alpha
+                        :mips))
   (progn
     (defun throw-test ()
       (throw 'no-such-tag t))
 
 ;;; FIXME: This test really should be broken into smaller pieces
 (with-test (:name (:backtrace :misc)
-            :fails-on '(and :x86 :linux))
+            :fails-on '(and :x86 (or :linux :sunos)))
   (macrolet ((with-details (bool &body body)
                `(let ((sb-debug:*show-entry-point-details* ,bool))
                  ,@body)))
 (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)))
 ;;; This is not a WITH-TEST :FAILS-ON PPC DARWIN since there are
 ;;; suspicions that the breakpoint trace might corrupt the whole image
 ;;; on that platform.
-#-(and ppc darwin)
-(let ((out (with-output-to-string (*trace-output*)
-             (trace trace-this :encapsulate nil)
-             (assert (eq 'ok (trace-this)))
-             (untrace))))
-  (assert (search "TRACE-THIS" out))
-  (assert (search "returned OK" out)))
+#-(and (or ppc x86) darwin)
+(with-test (:name (trace :encapsulate nil)
+            :fails-on '(or :ppc :sparc :mips))
+  (let ((out (with-output-to-string (*trace-output*)
+               (trace trace-this :encapsulate nil)
+               (assert (eq 'ok (trace-this)))
+               (untrace))))
+    (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 :mips))
+  (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