Ensure that %BIT-POSITION does not read too many words
[sbcl.git] / contrib / sb-posix / sb-posix.asd
blobc9a449c90afb51447ad22430340d25f7465c7d45
1 ;;; -*-  Lisp -*-
2 (defsystem sb-posix
3   :defsystem-depends-on (sb-grovel)
4   #+sb-building-contrib :pathname
5   #+sb-building-contrib #p"SYS:CONTRIB;SB-POSIX;"
6   :components ((:file "defpackage")
7                (:file "strtod" :depends-on ("defpackage"))
8                (:file "designator" :depends-on ("defpackage"))
9                (:file "macros" :depends-on ("designator"))
10                (:sb-grovel-constants-file "constants"
11                 :package :sb-posix :depends-on  ("defpackage"))
12                (:file "interface" :depends-on ("constants" "macros" "designator")))
13   :perform (load-op :after (o c) (provide 'sb-posix))
14   :perform (test-op (o c) (test-system 'sb-posix/tests)))
16 (defsystem sb-posix/tests
17   :depends-on (sb-rt)
18   #+sb-building-contrib :pathname
19   #+sb-building-contrib #p"SYS:CONTRIB;SB-POSIX;"
20   :components ((:file "libc-tests")
21                (:file "posix-tests"))
22   :perform
23   (test-op (o c)
24     (funcall (intern "DO-TESTS" (find-package "SB-RT")))
25     (let ((failures (funcall (intern "PENDING-TESTS" "SB-RT")))
26           (ignored-failures (loop for sym being the symbols of :sb-posix-tests
27                                   if (search ".ERROR" (symbol-name sym))
28                                     collect sym)))
29       (cond
30         ((null failures)
31          t)
32         ((null (set-difference failures ignored-failures))
33          (warn "~@<some POSIX implementations return incorrect error values for ~
34                 failing calls, but there is legitimate variation between ~
35                 implementations too.  If you think the errno ~
36                 from your platform is valid, please contact the sbcl ~
37                 developers; otherwise, please submit a bug report to your ~
38                 kernel distributor~@:>")
39          t)
40         (t
41          (error "non-errno tests failed!"))))))