[Checkins] SVN: zc.metarecipe/trunk/src/zc/metarecipe/test Fixed: Testing support didn't catch type errors resulting from using
jim
cvs-admin at zope.org
Mon Sep 24 16:00:35 UTC 2012
Log message for revision 127878:
Fixed: Testing support didn't catch type errors resulting from using
non-string data (especially unicode) in recipe options.
Changed:
U zc.metarecipe/trunk/src/zc/metarecipe/testing.py
U zc.metarecipe/trunk/src/zc/metarecipe/tests.py
-=-
Modified: zc.metarecipe/trunk/src/zc/metarecipe/testing.py
===================================================================
--- zc.metarecipe/trunk/src/zc/metarecipe/testing.py 2012-09-24 15:58:56 UTC (rev 127877)
+++ zc.metarecipe/trunk/src/zc/metarecipe/testing.py 2012-09-24 16:00:32 UTC (rev 127878)
@@ -8,5 +8,7 @@
def __getitem__(self, name):
print "[%s]" % name
for k, v in sorted(self._raw[name].items()):
+ if not isinstance(v, str):
+ raise TypeError('Option values must be strings', v)
print "%s = %s" % (k, v.replace("\n", "\n ").strip())
return self._raw[name]
Modified: zc.metarecipe/trunk/src/zc/metarecipe/tests.py
===================================================================
--- zc.metarecipe/trunk/src/zc/metarecipe/tests.py 2012-09-24 15:58:56 UTC (rev 127877)
+++ zc.metarecipe/trunk/src/zc/metarecipe/tests.py 2012-09-24 16:00:32 UTC (rev 127878)
@@ -12,11 +12,42 @@
#
##############################################################################
from zope.testing import setupstack
+import doctest
import manuel.capture
import manuel.doctest
import manuel.testing
import unittest
+def test_testing_error_on_unicode_and_other_types():
+ """
+ >>> import zc.metarecipe.testing
+ >>> buildout = zc.metarecipe.testing.Buildout()
+
+ Strings are cool:
+
+ >>> buildout._raw['x'] = dict(o='v')
+ >>> _ = buildout['x']
+ [x]
+ o = v
+
+ Unicode not so much:
+
+ >>> buildout._raw['x'] = dict(o=u'v')
+ >>> _ = buildout['x']
+ Traceback (most recent call last):
+ ...
+ TypeError: ('Option values must be strings', u'v')
+
+ Or other non strings:
+
+ >>> buildout._raw['x'] = dict(o=1)
+ >>> _ = buildout['x']
+ Traceback (most recent call last):
+ ...
+ TypeError: ('Option values must be strings', 1)
+
+ """
+
def test_suite():
return unittest.TestSuite((
manuel.testing.TestSuite(
@@ -24,5 +55,6 @@
'README.txt',
setUp=setupstack.setUpDirectory, tearDown=setupstack.tearDown,
),
+ doctest.DocTestSuite(),
))
More information about the checkins
mailing list