[Zope-dev] Zope Tests: 10 OK, 4 Failed, 2 Unknown
Lennart Regebro
regebro at gmail.com
Tue May 4 05:02:22 EDT 2010
On Mon, May 3, 2010 at 20:02, Tres Seaver <tseaver at palladion.com> wrote:
> - - zope.browserpage
> - - zope.viewlet
> - - zope.contentprovider
> - - zope.deferredimport
These tests all fail because as Tres pointed out, Python 2.4 doesn't
set __file__ to the doctest filename in the globals. Zope.browserpage
in turn uses those globals to determine the filename of the
pagetemplate. So, you get an error if you create a browserpage in a
DocTestFile, like so:
ErrorPage = SimpleViewClass(errorFileName, name='error.html')
Passing in file explicitly solves the problem:
ErrorPage = SimpleViewClass(errorFileName, name='error.html',
offering={'__file__': 'README.txt'})
The same thing goes for ViewPagetemplateFile, but there it's called
_prefix instead of offering. Yeah, none of those variable names make
sense.
It can also typically be fixed by passing in __file__ explicitly to the doctest:
def test_suite():
import doctest
filename = os.path.join(os.pardir, 'namedtemplate.txt')
return doctest.DocFileSuite(
filename,
setUp=pageSetUp, tearDown=zope.component.testing.tearDown,
globs={'__file__':
os.path.abspath(os.path.join(os.path.dirname(__file__), filename))}
)
Other options is to make the usage of __file__ lazy, so that it's only
looked up in the globals when accessed. Because I suspect it's not
actually used except when you get errors, but I'm not 100% sure.
So for the time being, I went for passing in __file__ explicitly in
globs. The tests run under Python 2.4 again.
--
Lennart Regebro: Python, Zope, Plone, Grok
http://regebro.wordpress.com/
+33 661 58 14 64
More information about the Zope-Dev
mailing list