Rev 3742: Catch spurious exceptions (python-2.6) when SocketServer is shut down. in file:///v/home/vila/src/bzr/experimental/bzr-py26-compat/

Vincent Ladeuil v.ladeuil+lp at free.fr
Fri Sep 26 16:28:30 BST 2008


At file:///v/home/vila/src/bzr/experimental/bzr-py26-compat/

------------------------------------------------------------
revno: 3742
revision-id: v.ladeuil+lp at free.fr-20080926152829-ibdag0hw352qjcix
parent: v.ladeuil+lp at free.fr-20080926144520-nvwprjsbb927ff9t
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: http-server-select-exception
timestamp: Fri 2008-09-26 17:28:29 +0200
message:
  Catch spurious exceptions (python-2.6) when SocketServer is shut down.
  
  * bzrlib/tests/test_http.py:
  (TestProxyHttpServer.proxied_in_env,
  TestProxyHttpServer.not_proxied_in_env): Revert expected and
  actual expressions to conform with bzr rules.
  
  * bzrlib/tests/http_server.py:
  (HttpServer.__repr__): Added for debug purposes.
  (HttpServer._http_start): Catch spurious exceptions when running
  with python-2.6.
-------------- next part --------------
=== modified file 'bzrlib/tests/http_server.py'
--- a/bzrlib/tests/http_server.py	2008-06-10 05:55:15 +0000
+++ b/bzrlib/tests/http_server.py	2008-09-26 15:28:29 +0000
@@ -20,6 +20,7 @@
 import posixpath
 import random
 import re
+import select
 import SimpleHTTPServer
 import socket
 import SocketServer
@@ -418,6 +419,10 @@
         # Allows tests to verify number of GET requests issued
         self.GET_request_nb = 0
 
+    def __repr__(self):
+        return "%s(%s:%s)" % \
+            (self.__class__.__name__, self.host, self.port)
+
     def _get_httpd(self):
         if self._httpd is None:
             rhandler = self.request_handler
@@ -467,6 +472,14 @@
                 httpd.handle_request()
             except socket.timeout:
                 pass
+            except (socket.error, select.error), e:
+               if e[0] == errno.EBADF:
+                   # Starting with python-2.6, handle_request may raise socket
+                   # or select exceptions when the server is shut down (as we
+                   # do).
+                   pass
+               else:
+                   raise
 
     def _get_remote_url(self, path):
         path_parts = path.split(os.path.sep)

=== modified file 'bzrlib/tests/test_http.py'
--- a/bzrlib/tests/test_http.py	2008-09-26 07:56:08 +0000
+++ b/bzrlib/tests/test_http.py	2008-09-26 15:28:29 +0000
@@ -1138,7 +1138,7 @@
         url = self.server.get_url()
         t = self._transport(url)
         try:
-            self.assertEqual(t.get('foo').read(), 'proxied contents of foo\n')
+            self.assertEqual('proxied contents of foo\n', t.get('foo').read())
         finally:
             self._restore_env()
 
@@ -1147,7 +1147,7 @@
         url = self.server.get_url()
         t = self._transport(url)
         try:
-            self.assertEqual(t.get('foo').read(), 'contents of foo\n')
+            self.assertEqual('contents of foo\n', t.get('foo').read())
         finally:
             self._restore_env()
 



More information about the bazaar-commits mailing list