test_web: workaround broken HEAD behavior in twisted-2.5.0 and earlier
authorBrian Warner <warner@allmydata.com>
Wed, 13 Aug 2008 02:45:20 +0000 (19:45 -0700)
committerBrian Warner <warner@allmydata.com>
Wed, 13 Aug 2008 02:45:20 +0000 (19:45 -0700)
src/allmydata/test/test_web.py

index 9173c55381d479f9c670447208da325e0e43bcf0..eed62d1e1fb7fcdebd9b335ea6d95f8666c0ecae 100644 (file)
@@ -99,6 +99,18 @@ class HTTPClientHEADFactory(client.HTTPClientFactory):
         client.HTTPClientFactory.__init__(self, *args, **kwargs)
         self.deferred.addCallback(lambda res: self.response_headers)
 
+    def noPage(self, reason):
+        # Twisted-2.5.0 and earlier had a bug, in which they would raise an
+        # exception when the response to a HEAD request had no body (when in
+        # fact they are defined to never have a body). This was fixed in
+        # Twisted-8.0 . To work around this, we catch the
+        # PartialDownloadError and make it disappear.
+        if (reason.check(client.PartialDownloadError)
+            and self.method.upper() == "HEAD"):
+            self.page("")
+            return
+        return client.HTTPClientFactory.noPage(self, reason)
+
 
 class WebMixin(object):
     def setUp(self):