X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-bsd-sockets%2Ftests.lisp;h=1ed052fd574ef86566bbcf9a4009b9822a9ab303;hb=f79e7df41edd15a68c763263a81e7c640005a60b;hp=1ddb408bacdbd41e1e29aaf86573d268acb2e8fc;hpb=7f9bcccc3463d69272fb98d7418a973e41a013c9;p=sbcl.git diff --git a/contrib/sb-bsd-sockets/tests.lisp b/contrib/sb-bsd-sockets/tests.lisp index 1ddb408..1ed052f 100644 --- a/contrib/sb-bsd-sockets/tests.lisp +++ b/contrib/sb-bsd-sockets/tests.lisp @@ -50,7 +50,7 @@ (and (> (socket-file-descriptor s) 1) t)) t) -(deftest* (make-inet-socket-wrong :fails-on :win32) +(deftest* (make-inet-socket-wrong) ;; fail to make a socket: check correct error return. There's no nice ;; way to check the condition stuff on its own, which is a shame (handler-case @@ -66,7 +66,7 @@ (:no-error nil)) t) -(deftest* (make-inet-socket-keyword-wrong :fails-on :win32) +(deftest* (make-inet-socket-keyword-wrong) ;; same again with keywords (handler-case (make-instance 'inet-socket :type :stream :protocol :udp) @@ -83,7 +83,7 @@ t) -(deftest* (non-block-socket :fails-on :win32) +(deftest* (non-block-socket) (let ((s (make-instance 'inet-socket :type :stream :protocol :tcp))) (setf (non-blocking-mode s) t) (non-blocking-mode s)) @@ -98,21 +98,29 @@ #-(or sbcl gencgc) (sb-ext:gc)) (deftest inet-socket-bind - (let ((s (make-instance 'inet-socket :type :stream :protocol (get-protocol-by-name "tcp")))) - ;; Given the functions we've got so far, if you can think of a - ;; better way to make sure the bind succeeded than trying it - ;; twice, let me know - ;; 1974 has no special significance, unless you're the same age as me - (do-gc-portably) ;gc should clear out any old sockets bound to this port - (socket-bind s (make-inet-address "127.0.0.1") 1974) - (handler-case - (let ((s2 (make-instance 'inet-socket :type :stream :protocol (get-protocol-by-name "tcp")))) - (socket-bind s2 (make-inet-address "127.0.0.1") 1974) - nil) - (address-in-use-error () t))) + (let* ((tcp (get-protocol-by-name "tcp")) + (address (make-inet-address "127.0.0.1")) + (s (make-instance 'inet-socket :type :stream :protocol tcp))) + (do-gc-portably) ; gc should clear out any old sockets bound to this port + (unwind-protect + ;; Given the functions we've got so far, if you can think of a + ;; better way to make sure the bind succeeded than trying it + ;; twice, let me know + (progn + (socket-bind s address 0) + (handler-case + (let ((port (nth-value 1 (socket-name s))) + (s2 (make-instance 'inet-socket + :type :stream :protocol tcp))) + (unwind-protect + (socket-bind s2 address port) + (socket-close s2)) + nil) + (address-in-use-error () t))) + (socket-close s))) t) -(deftest* (simple-sockopt-test :fails-on :win32) +(deftest* (simple-sockopt-test) ;; test we can set SO_REUSEADDR on a socket and retrieve it, and in ;; the process that all the weird macros in sockopt happened right. (let ((s (make-instance 'inet-socket :type :stream :protocol (get-protocol-by-name "tcp"))))