[Zope-Checkins] SVN: Zope/branches/Zope-2_8-branch/ Collector
#2235. Stop ZCatalog.manage_catalogObject from doing boolean
evaluation of found objects.
Leonardo Rochael Almeida
leo at hiper.com.br
Wed Nov 15 00:32:08 EST 2006
Log message for revision 71126:
Collector #2235. Stop ZCatalog.manage_catalogObject from doing boolean evaluation of found objects.
Changed:
U Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
U Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalog.py
U Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/tests/testCatalog.py
-=-
Modified: Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
===================================================================
--- Zope/branches/Zope-2_8-branch/doc/CHANGES.txt 2006-11-15 04:43:00 UTC (rev 71125)
+++ Zope/branches/Zope-2_8-branch/doc/CHANGES.txt 2006-11-15 05:32:07 UTC (rev 71126)
@@ -8,6 +8,9 @@
Bugs fixed
+ - Collector #2235: ZCatalog.manage_catalogObject was triggering __len__
+ of objects that implement it, like containers.
+
- Fix yet another resTructuredText glitch, and add tests (test
backported from 2.9, which was not in fact vulnerable).
Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalog.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalog.py 2006-11-15 04:43:00 UTC (rev 71125)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalog.py 2006-11-15 05:32:07 UTC (rev 71126)
@@ -232,7 +232,7 @@
for url in urls:
obj = self.resolve_path(url)
- if not obj:
+ if obj is not None:
obj = self.resolve_url(url, REQUEST)
if obj is not None:
self.catalog_object(obj, url)
Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/tests/testCatalog.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/tests/testCatalog.py 2006-11-15 04:43:00 UTC (rev 71125)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/tests/testCatalog.py 2006-11-15 05:32:07 UTC (rev 71126)
@@ -246,6 +246,27 @@
result = self._catalog(title='9999')
self.assertEquals(1, len(result))
+ def test_manage_catalogObject_does_not_trigger_boolean_eval(self):
+ # make objects with __len__ and __nonzero__
+ class mydummy1:
+ def __init__(self, fail):
+ self.fail = fail
+ def __len__(self):
+ self.fail("__len__() was called")
+ class mydummy2:
+ def __init__(self, fail):
+ self.fail = fail
+ def __nonzero__(self):
+ self.fail("__nonzero__() was called")
+ # store them to be found by the catalog
+ self.d['0'] = mydummy1(self.fail)
+ self.d['1'] = mydummy2(self.fail)
+ # create a fake response that doesn't bomb on manage_catalogObject()
+ class myresponse:
+ def redirect(self, url):
+ pass
+ # this next call should not fail
+ self._catalog.manage_catalogObject(None, myresponse(), 'URL1', urls=('0', '1'))
class dummy(ExtensionClass.Base):
att1 = 'att1'
More information about the Zope-Checkins
mailing list