[Zope-CMF] Re: GenericSetup: catalog.xml ideas
Maurits van Rees
m.van.rees at zestsoftware.nl
Thu Mar 22 11:53:21 EDT 2007
yuppie, on 2007-03-02:
> Maurits van Rees wrote:
>> So here are some points, with suggested changes to the _initIndexes
>> function in exportimport.py. The tests even run after this, so it
>> seems these changes do not break anything. But I have not *added*
>> tests for this.
>
> To get your patches accepted it would be useful to have new tests that
> fail without the patches.
Okay, I have a patch with such a test for the first point that I
raised: removing an index in an extension profile and then making sure
that reapplying that profile does not throw an error.
The patch is for
svn://svn.zope.org/repos/main/GenericSetup/branches/1.2/ZCatalog
------------------------------------------------------------------------
maurits at kronos:~/svn/plone25-zope29/GenericSetup/ZCatalog $ svn diff
Index: tests/test_exportimport.py
===================================================================
--- tests/test_exportimport.py (revision 73446)
+++ tests/test_exportimport.py (working copy)
@@ -77,6 +77,7 @@
<extra name="index_type" value="Okapi BM25 Rank"/>
<extra name="lexicon_id" value="foo_plexicon"/>
</index>
+ <index name="non_existing" remove="True"/>
</object>
"""
Index: exportimport.py
===================================================================
--- exportimport.py (revision 73446)
+++ exportimport.py (working copy)
@@ -94,7 +94,12 @@
idx_id = str(child.getAttribute('name'))
if child.hasAttribute('remove'):
- zcatalog.delIndex(idx_id)
+ # Remove index if it is there; then continue to the
+ # next index. Removing a non existing index should
+ # not cause an error, so you can apply the profile
+ # twice without problems.
+ if idx_id in zcatalog.indexes():
+ zcatalog.delIndex(idx_id)
continue
if idx_id not in zcatalog.indexes():
------------------------------------------------------------------------
Can this go in? I have no commit rights, so someone else would have
to do that.
The other points are currently beyond my ability.
BTW, I am slightly freaked out by the following. In that test file
there is this test:
self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML))
The test passes of course. But when I copy that line so the test is
run twice, like this:
self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML))
self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML))
then the second test throws an error!
------------------------------------------------------------------------
Running unit tests:
Running:
....
Error in test test_body_set_update (Products.GenericSetup.ZCatalog.tests.\
test_exportimport.ZCatalogXMLAdapterTests)
Traceback (most recent call last):
File "unittest.py", line 260, in run
testMethod()
File "/home/maurits/instances/projects/Products/GenericSetup/ZCatalog/\
tests/test_exportimport.py", line 184, in test_body_set_update
self.assertEqual(adapted.body, _CATALOG_BODY % ('', _ZCTEXT_XML))
File "/home/maurits/instances/projects/Products/GenericSetup/utils.py", line\
503, in _exportBody
self._doc.appendChild(self._exportNode())
File "/usr/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", line 1548,\
in appendChild
raise xml.dom.HierarchyRequestErr(
HierarchyRequestErr: two document elements disallowed
.
Ran 5 tests with 0 failures and 1 errors in 0.474 seconds.
------------------------------------------------------------------------
Going in with the pdb also throws that error when you try to print
adapted.body twice.
I will loan you my "Here be dragons" sign. ;-)
--
Maurits van Rees | http://maurits.vanrees.org/ [NL]
Work | http://zestsoftware.nl/
"Do not worry about your difficulties in computers,
I can assure you mine are still greater."
More information about the Zope-CMF
mailing list