[Checkins] SVN: zope.schema/trunk/ Improve error messages when term tokens or values are duplicates.
Benji York
benji+zope.org at benjiyork.com
Tue Aug 31 20:33:14 EDT 2010
Log message for revision 116070:
Improve error messages when term tokens or values are duplicates.
Changed:
U zope.schema/trunk/CHANGES.txt
U zope.schema/trunk/src/zope/schema/tests/test_vocabulary.py
U zope.schema/trunk/src/zope/schema/vocabulary.py
-=-
Modified: zope.schema/trunk/CHANGES.txt
===================================================================
--- zope.schema/trunk/CHANGES.txt 2010-09-01 00:23:26 UTC (rev 116069)
+++ zope.schema/trunk/CHANGES.txt 2010-09-01 00:33:13 UTC (rev 116070)
@@ -2,10 +2,11 @@
CHANGES
=======
-3.6.5 (unreleased)
+3.7.0 (unreleased)
------------------
-- Nothing changed yet.
+- Improve error messages when term tokens or values are duplicates.
+- Fix the buildout so the tests run.
3.6.4 (2010-06-08)
Modified: zope.schema/trunk/src/zope/schema/tests/test_vocabulary.py
===================================================================
--- zope.schema/trunk/src/zope/schema/tests/test_vocabulary.py 2010-09-01 00:23:26 UTC (rev 116069)
+++ zope.schema/trunk/src/zope/schema/tests/test_vocabulary.py 2010-09-01 00:33:13 UTC (rev 116070)
@@ -154,7 +154,22 @@
self.assertRaises(
ValueError, vocabulary.SimpleVocabulary.fromItems,
[(1, 'one'), ('1', 'another one')])
+ self.assertRaises(
+ ValueError, vocabulary.SimpleVocabulary.fromItems,
+ [(0, 'one'), (1, 'one')])
+ def test_nonunique_token_message(self):
+ try:
+ vocabulary.SimpleVocabulary.fromValues([2, '2'])
+ except ValueError, e:
+ self.assertEquals(e.message, "term tokens must be unique: '2'")
+
+ def test_nonunique_token_message(self):
+ try:
+ vocabulary.SimpleVocabulary.fromItems([(0, 'one'), (1, 'one')])
+ except ValueError, e:
+ self.assertEquals(e.message, "term values must be unique: 'one'")
+
def test_overriding_createTerm(self):
class MyTerm(object):
def __init__(self, value):
Modified: zope.schema/trunk/src/zope/schema/vocabulary.py
===================================================================
--- zope.schema/trunk/src/zope/schema/vocabulary.py 2010-09-01 00:23:26 UTC (rev 116069)
+++ zope.schema/trunk/src/zope/schema/vocabulary.py 2010-09-01 00:33:13 UTC (rev 116070)
@@ -59,11 +59,14 @@
self.by_token = {}
self._terms = terms
for term in self._terms:
+ if term.value in self.by_value:
+ raise ValueError(
+ 'term values must be unique: %s' % repr(term.value))
+ if term.token in self.by_token:
+ raise ValueError(
+ 'term tokens must be unique: %s' % repr(term.token))
self.by_value[term.value] = term
self.by_token[term.token] = term
- if not (len(self.by_value) == len(self.by_token) == len(terms)):
- raise ValueError(
- 'Supplied vocabulary values resulted in duplicate term tokens')
if interfaces:
directlyProvides(self, *interfaces)
More information about the checkins
mailing list