[Twisted-web] Possible bug in nevow.testutil.FakeRequest setHeaders and getHeaders
exarkun at twistedmatrix.com
exarkun at twistedmatrix.com
Wed Sep 29 09:00:25 EDT 2010
On 12:48 pm, peter.westlake at pobox.com wrote:
>
>
>On Tue, 28 Sep 2010 17:52 +0000, exarkun at twistedmatrix.com wrote:
>...
>>It's correct that setHeader and getHeader operate on different data
>>sets. Less confusing names for what the two methods do would have
>>been
>>setResponseHeader and getRequestHeader respectively.
>>
>>In newer versions of Twisted, the requests have two new attributes,
>>requestHeaders and responseHeaders, with various methods for
>>inspection
>>and modification. Nevow's Request class should inherit these.
>>However
>>Nevow's FakeRequest probably doesn't.
>>
>>The right way to test for headers is probably to fix the FakeRequest
>>class so that it is more inspectable, and to verify that it actually
>>behaves in the same way as a real request object.
>
>Thanks for the explanation! I've done this for now:
>
> class FakeRequest(nevow.testutil.FakeRequest):
> def getResponseHeader(self, key):
> return self.headers.get(key.lower())
>
>Should I put in a ticket requesting something like this?
Certainly. Things are a little mixed up here though, let's see...
Twisted Web provides a base Request class. Nevow subclasses it to
create the request class all Nevow applications get. Then Twisted Web
also provides a FakeRequest, which isn't very good, and I think there is
a ticket (in the Twisted tracker) for improving. Then Nevow provides
its own FakeRequest, not a subclass of Twisted's FakeRequest. There
probably needs to be a Nevow ticket for doing something about Nevow's
FakeRequest class - in the short term, fixing these minor issues; but in
the longer term, getting rid of it, and hopefully NevowRequest as well,
makes a lot of sense.
Jean-Paul
More information about the Twisted-web
mailing list