Index: src/zope/app/form/browser/tests/test_itemswidget.py =================================================================== --- src/zope/app/form/browser/tests/test_itemswidget.py (revision 73036) +++ src/zope/app/form/browser/tests/test_itemswidget.py (working copy) @@ -130,6 +130,17 @@ def test_not_required(self): self.failIf(self._makeWidget().required) + def test_toFieldValue(self): + widget = self._makeWidget() + self.assertEquals( + widget._toFieldValue(None), self._field.missing_value) + self.assertEquals(widget._toFieldValue('token1'), 'one') + self.assertRaises( + ConversionError, widget._toFieldValue, 'no_such_token') + self.assertRaises( + ConversionError, widget._toFieldValue, ['token1', 'token2']) + + class ItemsMultiDisplayWidgetTest(ItemsWidgetBaseTest): _widget = ItemsMultiDisplayWidget Index: src/zope/app/form/browser/itemswidgets.py =================================================================== --- src/zope/app/form/browser/itemswidgets.py (revision 73036) +++ src/zope/app/form/browser/itemswidgets.py (working copy) @@ -155,7 +155,7 @@ if input: try: return self.convertTokensToValues([input])[0] - except InvalidValue, e: + except (InvalidValue, TypeError), e: raise ConversionError("Invalid value", e) else: return self.context.missing_value