From: Brian Warner Date: Wed, 13 Aug 2008 02:45:20 +0000 (-0700) Subject: test_web: workaround broken HEAD behavior in twisted-2.5.0 and earlier X-Git-Url: https://git.rkrishnan.org/%5B/%5D%20/uri/%22doc.html/COPYING.GPL?a=commitdiff_plain;h=bcbb51fe4aee8428ed1f8c2b1e0ec9c2768dfd3b;p=tahoe-lafs%2Ftahoe-lafs.git test_web: workaround broken HEAD behavior in twisted-2.5.0 and earlier --- diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py index 9173c553..eed62d1e 100644 --- a/src/allmydata/test/test_web.py +++ b/src/allmydata/test/test_web.py @@ -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):