From c7c02f44492da19d848d66556c2c13b9c79ee7ee Mon Sep 17 00:00:00 2001 From: Bert JW Regeer Date: Sat, 7 Feb 2015 12:48:30 -0700 Subject: Add test that showcases failure When _set_properties() is called before implementedBy or providedBy, the new class that is generated does NOT conform to IRequest. --- pyramid/tests/test_request.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pyramid/tests/test_request.py b/pyramid/tests/test_request.py index cf591eb36..1a7b1a106 100644 --- a/pyramid/tests/test_request.py +++ b/pyramid/tests/test_request.py @@ -479,6 +479,20 @@ class Test_subclassing_Request(unittest.TestCase): self.assertTrue(IRequest.providedBy(req)) self.assertTrue(IRequest.implementedBy(RequestSub)) + def test_subclass_mutate_before_providedBy(self): + from pyramid.interfaces import IRequest + from pyramid.request import Request + from zope.interface import providedBy, implementedBy, implementer + + class RequestSub(Request): + pass + + req = RequestSub({}) + req._set_properties({'b': 'b'}) + + self.assertTrue(IRequest.providedBy(req)) + self.assertTrue(IRequest.implementedBy(RequestSub)) + class DummyRequest: def __init__(self, environ=None): -- cgit v1.2.3