Reenable ALLOCATION-INFORMATION.4, mark as known failure
authorDavid Lichteblau <david@lichteblau.com>
Fri, 5 Oct 2012 16:40:38 +0000 (18:40 +0200)
committerDavid Lichteblau <david@lichteblau.com>
Fri, 5 Oct 2012 17:38:40 +0000 (19:38 +0200)
It seems unlikely to me that the combination of features currently
identified as problematic is truly accurate.  More plausible seems
that ALLOCATION-INFORMATION is broken and needs a bug fix.  Yet the
warning now given should be clear enough and allow users to report
this issue.

contrib/sb-introspect/sb-introspect.asd
contrib/sb-introspect/test-driver.lisp

index a9587df..d547cc6 100644 (file)
          (make-pathname :directory (pathname-directory
                                     '#.(or *compile-file-pathname*
                                            *load-pathname*)))))
-    (or (funcall (intern "DO-TESTS" (find-package "SB-RT")))
-        (error "~S failed" 'test-op))))
+    (multiple-value-bind (soft strict pending)
+        (funcall (intern "DO-TESTS" (find-package "SB-RT")))
+      (fresh-line)
+      (unless strict
+        #+sb-testing-contrib
+        ;; We create TEST-PASSED from a shell script if tests passed.  But
+        ;; since the shell script only `touch'es it, we can actually create
+        ;; it ahead of time -- as long as we're certain that tests truly
+        ;; passed, hence the check for SOFT.
+        (when soft
+          (with-open-file (s #p"SYS:CONTRIB;SB-INTROSPECT;TEST-PASSED"
+                             :direction :output)
+            (dolist (pend pending)
+              (format s "Expected failure: ~A~%" pend))))
+        (warn "ignoring expected failures in test-op"))
+      (unless soft
+        (error "test-op failed with unexpected failures")))))
index 810a295..e31b2a3 100644 (file)
 
 (in-package :sb-introspect-test)
 
+(defmacro deftest* ((name &key fails-on) form &rest results)
+  `(progn
+     (when (sb-impl::featurep ',fails-on)
+       (pushnew ',name sb-rt::*expected-failures*))
+     (deftest ,name ,form ,@results)))
+
 (deftest function-lambda-list.1
     (function-lambda-list 'cl-user::one)
   (cl-user::a cl-user::b cl-user::c))
 
 ;;; Skip the whole damn test on GENCGC PPC -- the combination is just
 ;;; to flaky for this to make too much sense.
-;; #-(and ppc gencgc)
-
-;;; It appears that this test can fail due to systematic issues (possibly
-;;; with the C compiler used) which we cannot detect based on *features*.
-;;; Until this issue has been fixed, I am disabling this test entirely to
-;;; to allow installation of the contrib on affected builds. C.f. lp1057631.
-;;; --DFL
-#-gencgc
-(deftest allocation-information.4
+;;;
+;;; -- It appears that this test can also fail due to systematic issues
+;;; (possibly with the C compiler used) which we cannot detect based on
+;;; *features*.  Until this issue has been fixed, I am marking this test
+;;; as failing on Windows to allow installation of the contrib on
+;;; affected builds, even if the underlying issue is (possibly?) not even
+;;; strictly related to windows.  C.f. lp1057631.  --DFL
+;;;
+(deftest* (allocation-information.4
+           ;; Ignored as per the comment above, even though it seems
+           ;; unlikely that this is the right condition.
+           :fails-on (or :win32 (and :ppc :gencgc)))
     #+gencgc
     (tai #'cons :heap
          ;; FIXME: This is the canonical GENCGC result. On PPC we sometimes get