[Zope-CMF] cmf-tests - OK: 3, UNKNOWN: 1

Jens Vagelpohl jens at dataflake.org
Sun Aug 7 11:13:44 EDT 2011


On Aug 7, 2011, at 07:00 , CMF tests summarizer wrote:
> 
> [1]    UNKNOWN FAILED (failures=3, errors=4) : CMF-trunk Zope-trunk Python-2.6.6 : Linux
>       https://mail.zope.org/pipermail/cmf-tests/2011-August/015089.html

I have tried to pinpoint the reason for some of these test failures. Two of these tests are for the CMF Discussions functionality:

Failure in test test_deleteReplies (Products.CMFDefault.tests.test_Discussions.DiscussionTests)
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/unittest.py", line 279, in run
    testMethod()
  File "/usr/local/py26/cmf_trunk/src/Products.CMFDefault/Products/CMFDefault/tests/test_Discussions.py", line 301, in test_deleteReplies
    self.assertEqual(len(ctool), 4)
  File "/usr/local/lib/python2.6/unittest.py", line 350, in failUnlessEqual
    (msg or '%r != %r' % (first, second))
AssertionError: 6 != 4

Failure in test test_itemCataloguing (Products.CMFDefault.tests.test_Discussions.DiscussionTests)
Traceback (most recent call last):
  File "/usr/local/lib/python2.6/unittest.py", line 279, in run
    testMethod()
  File "/usr/local/py26/cmf_trunk/src/Products.CMFDefault/Products/CMFDefault/tests/test_Discussions.py", line 212, in test_itemCataloguing
    % reply.getId()))
  File "/usr/local/lib/python2.6/unittest.py", line 325, in failUnless
    if not expr: raise self.failureException, msg
AssertionError

Those tests started failing after the following Zope-checkin:

http://svn.zope.org/?rev=122213&view=rev

What ends up happening in both cases is discussion replies ending up with a wrong idea about their physical path. Normally, they all should have a physical path that points to the "talkback" discussion container object attached to the original content item that houses the discussion, like so:

/path/to/content/talkback/12345
/path/to/content/talkback/12346
/path/to/content/talkback/12347
…

All of a sudden a "reply to a reply" thinks it is stored not in the content object's "talkback", but in a new "talkback" attached to the reply the user has replied to:

/path/to/content/talkback/12345
/path/to/content/talkback/12345/talkback/12346
/path/to/content/talkback/12345/talkback/12346/talkback/12347

The problem appears in CMFDefault.DiscussionItem.createReply on line 251, where the newly created discussion reply is aqcuisition-wrapped in the talkback object:

        item = DiscussionItem( id, title=title, description=title )
        self._container[id] = item
        item = item.__of__(self)

After the wrapping, the discussion item has the wrong path. Even though "self", the "talkback" object, has the correct path when calling getPhysicalPath on it. I can't see anything overly stupid in the DiscussionItem code, so there has to be an issue with that Zope getPhysicalPath change. Reverting that one change in the current Zope trunk fixes the tests.

jens




More information about the Zope-CMF mailing list