Introduction
Poi is an issue tracker for Plone. The code is in the collective.
The eXtremeManagement product from Zest Software and others depends on
Poi. The biggest reason: Daniel Nouri has added a content type
PoiTask to eXtremeManagement. You can add such a PoiTask to a Story
and there easily link to one or more Poi issues that should be fixed.
So I am interested in what happens with Poi and I occasionally add
some code or run some tests on various Poi versions.
Poi has several branches. The ones that interest me here are 1.0
and plone3-support.
Poi has several dependencies: AddRemoveWidget, contentmigration,
DataGridField and intelligenttext.
It can be annoying to have to hunt down where all dependencies can be
downloaded and which version is needed. To make it easier on users,
Poi has subversion bundles for this. The ones that interest me here
are 10 and plone3. The bundles have in common that all
dependencies are using trunk. So what are the differences? And with
which Plone version can you use them?
Testing Poi
First of all: I improved the tests of Poi slightly, on all three
branches that I investigate here. When you have an smtp server on
your localhost, running the Poi tests would actually cause a few emails
to be sent. They go to non-existing email addresses, so you (or some
administrator) will get some mail delivery failures in your inbox, which
is not nice. So in tests/ptc.py I replaced the default mail host
with a simple mock mail host, which avoids this. That code was taken (and
drastically simplified) from PasswordResetTool: thanks!
There is always one test that fails. This is a known issue: a deleted
response causes stale SearchableText for an issue. If someone has an
idea on how to fix this, that would be nice.
When below I say a branch or bundle is compatible with some Plone
version then I mean that all tests except that one pass for that Plone
version. The test combinations of Zope and Plone that I tried were:
- Plone 2.1.4 (tar ball) with Zope 2.8.9; for the tests I added
PloneTestCase 0.8.2. - Plone 2.5.3 (tar ball) with Zope 2.9.7
- Plone 3.0 (subversion trunk) with Zope 2.10.3
All were using python 2.4.
Note: I did not run any tests in combination with PloneSoftwareCenter.
instancemanager
I ran the tests with help from instancemanager. I use that tool a
lot, so I am used to it, which helps. But I really like it for
quickly running tests for (various versions of) a product on various
versions of Plone. Here is my .instancemanager/poi.py file, ready
for running the tests for the combination of Poi 1.0, Zope 2.9.7 and
Plone 2.5.3. Commented out are the lines that are used for the other
combinations:
python = 'python2.4'
#zope_version = '2.8.9'
zope_version = '2.9.7'
#zope_version = '2.10.3'
archive_sources = [
#'PloneTestCase-0.8.2.tar.gz',
]
symlinkbundle_sources = [
{'source': 'Poi10bundle',
'url': 'http://svn.plone.org/svn/collective/Poi/bundles/10'},
#{'source': 'Poitrunkbundle',
# 'url': 'http://svn.plone.org/svn/collective/Poi/bundles/trunk'},
#{'source': 'Poi30bundle',
# 'url': 'http://svn.plone.org/svn/collective/Poi/bundles/plone3'},
#{'url': 'http://svn.plone.org/svn/plone/bundles/3.0'},
#{'url':'https://svn.plone.org/svn/plone/bundles/3.0-lib',
# 'pylib': True},
]
archivebundle_sources = [
#{'url': 'http://heanet.dl.sourceforge.net/sourceforge/plone/Plone-2.1.4.tar.gz'},
{'url': 'http://plone.googlecode.com/files/Plone-2.5.3-final.tar.gz'},
]
main_products = ['Poi']
Then I just create an instance, fill the products directory and run
the Poi tests with this single command:
$ instancemanager poi --create --products --test=MAIN
When the tests have run, I add and remove some comment signs to get
the right versions and run that command again for the next
combination.
Poi 10 bundle
- This has Poi branch 1.0. That branch was created by Daniel Nouri on
2007-05-17, before he added new functionality on trunk. - Compatible with Plone 2.1 and 2.5
Poi trunk bundle
- This has Poi trunk, which has version number 1.1. Since putting 1.0
on a maintenance branch, trunk has seen the addition of link
detection by Daniel (links are automatically created from #123
to issue 123 in this tracker; and r1234 points to
revision/changelog 1234 if you specified a base url for that in your
tracker). Plus some small changes by others that I did not
investigate. - Compatible with Plone 2.1 and 2.5.
Poi plone3 bundle
-
This has Poi branch plone3-support. That branch was created by
Alexander Limi on 2007-04-25. Goal is to add Plone 3 support. -
This bundle does not have intelligenttext. The reason is that
intelligenttext is already available as a python module in Plone 3.
It should be in your instance, in
lib/python/plone/intelligenttext. The other
versions of Poi throw this error, when they try to install
intelligenttext:Products.CMFQuickInstallerTool.QuickInstallerTool.AlreadyInstalled: intelligenttext
This python module is not exactly the same as the Product from the
collective though. It misses some very recent additions there, like
adding rel="nofollow" to links; this also means that the Poi
tests had to be changed a bit. Or rather: I had to change the Poi
tests on the other two branches to fit the intelligenttext changes. -
Compatible with Plone 3.0 only.
Conclusions
- On Plone 2.1 or 2.5:
- For a Poi version without sudden changes that would require a
reinstall or a schema update: use branches/1.0 from
bundles/10. - For recent improvements: use trunk from bundles/trunk.
- For a Poi version without sudden changes that would require a
- On Plone 3.0: use branches/plone3-support from
bundles/plone3.
Maurits van Rees: Poi, intelligenttext and Plone 3
Originally from Planet Plone by