X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-concurrency%2Fsb-concurrency.asd;h=913f078db7f48bb41a7b0bec2e80aa114fa604a0;hb=4ff9d1fe33f936d40e329bedc8e2872fc2edf36a;hp=4246d5bc1b43e142d283a03bc8576c31c9dcea03;hpb=ea0735f0b8bab352d6c9797abec19e8c63563cf6;p=sbcl.git diff --git a/contrib/sb-concurrency/sb-concurrency.asd b/contrib/sb-concurrency/sb-concurrency.asd index 4246d5b..913f078 100644 --- a/contrib/sb-concurrency/sb-concurrency.asd +++ b/contrib/sb-concurrency/sb-concurrency.asd @@ -13,8 +13,10 @@ (asdf:defsystem :sb-concurrency :components ((:file "package") + (:file "frlock" :depends-on ("package")) (:file "queue" :depends-on ("package")) - (:file "mailbox" :depends-on ("package" "queue")))) + (:file "mailbox" :depends-on ("package" "queue")) + (:file "gate" :depends-on ("package")))) (asdf:defsystem :sb-concurrency-tests :depends-on (:sb-concurrency :sb-rt) @@ -23,8 +25,10 @@ :components ((:file "package") (:file "test-utils" :depends-on ("package")) + (:file "test-frlock" :depends-on ("package" "test-utils")) (:file "test-queue" :depends-on ("package" "test-utils")) - (:file "test-mailbox" :depends-on ("package" "test-utils")))))) + (:file "test-mailbox" :depends-on ("package" "test-utils")) + (:file "test-gate" :depends-on ("package" "test-utils")))))) (defmethod asdf:perform :after ((o asdf:load-op) (c (eql (asdf:find-system :sb-concurrency)))) @@ -37,5 +41,20 @@ (defmethod asdf:perform ((o asdf:test-op) (c (eql (asdf:find-system :sb-concurrency-tests)))) - (or (funcall (intern "DO-TESTS" (find-package "SB-RT"))) - (error "~S failed" 'asdf: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-CONCURRENCY;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"))))