Tim Knapp, on 2009-03-26:
> On Wed, 2009-03-25 at 21:20 +0100, Dieter Maurer wrote:
>> Tim Knapp wrote at 2009-3-23 18:21 +1300:
>> >I would like to override the DateTime.DateTime class within my
>> >functional tests. I have tried mocking (via mocker) and injecting the
>> >subclassed DateTime class into sys.modules (results in a
>> >TraversalError). The fartherest I've gotten is to set DateTime.DateTime
>> >= MySubclassedDateTime in my tests.py, which does work for the code
>> >'within' the package(s) I'm testing but all the Zope core code (i.e. the
>> >instance created within PloneTestCase) is still referencing the global
>> >DateTime module. Has anyone successfully done this?
>> 
>> "import DateTime; DateTime=<myDateTimeClass>" should be able
>> to replace the "DateTime" class -- sometimes.
>> 
>> 
>> Be aware, however, that this replacing takes effect only after
>> your assignment. Modules that already have imported the "DateTime"
>> class will not be affected.
>
> Thanks, yeah that was what I thought. I tried to do it in the _setup
> method of PloneTestCase, which theoretically gets called before the
> instance is runup but maybe not. Didn't seem to affect the Zope instance
> itself anyway.

A few years ago at Zest Software we needed a patch (for Archetypes I
think) and hit the same problem that our product was too late in the
startup process to have enough influence.  So we put the patch in a
product called (Products.)AAAPatch; affectionately called triple A
patch. :-) Due to the three A-s at the beginning it was virtually
guaranteed to be the first product to load.

-- 
Maurits van Rees | http://maurits.vanrees.org/
            Work | http://zestsoftware.nl/
"This is your day, don't let them take it away." [Barlow Girl]

_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to