diff -r 63b45c959a2a Lib/test/test_deque.py --- a/Lib/test/test_deque.py Sun Nov 04 07:00:04 2012 +0200 +++ b/Lib/test/test_deque.py Sun Nov 04 09:18:00 2012 -0800 @@ -332,6 +332,17 @@ d.clear() # clear an emtpy deque self.assertEqual(list(d), []) + def test_issue13349(self): + dq = deque('abc') + item = 't' + try: + dq.remove(item) + except ValueError as e: + item = "'%s'" % item # item is quoted in the error msg. + expected_msg = 'deque.remove(%s): element not in deque' % item + actual_msg, = e.args + self.assertEqual(expected_msg, actual_msg) + def test_remove(self): d = deque('abcdefghcij') d.remove('c') diff -r 63b45c959a2a Lib/test/test_xml_etree.py --- a/Lib/test/test_xml_etree.py Sun Nov 04 07:00:04 2012 +0200 +++ b/Lib/test/test_xml_etree.py Sun Nov 04 09:18:00 2012 -0800 @@ -261,9 +261,6 @@ >>> element.remove(subelement) >>> serialize(element) # 5 '' - >>> element.remove(subelement) - Traceback (most recent call last): - ValueError: list.remove(x): x not in list >>> serialize(element) # 6 '' >>> element[0:0] = [subelement, subelement, subelement] @@ -1888,6 +1885,17 @@ self.assertEqual(self._ilist(doc), all_tags) self.assertEqual(self._ilist(doc, '*'), all_tags) +class TreeBasicOperationTest(unittest.TestCase): + def test_issue13349(self): + elem = ET.XML("") + se = ET.Element("subtag") + try: + elem.remove(se) + except ValueError as e: + item = "'%s'" % se # item is quoted in the error msg. + expected_msg = 'list.remove(%s): element not in list' % item + actual_msg, = e.args + self.assertEqual(expected_msg, actual_msg) class TreeBuilderTest(unittest.TestCase): sample1 = ('extra) { /* element has no children, so raise exception */ - PyErr_SetString( - PyExc_ValueError, - "list.remove(x): x not in list" - ); + PyErr_Format(PyExc_ValueError, "list.remove(%0.100R): element not in list", element); return NULL; } @@ -1239,10 +1236,7 @@ if (i == self->extra->length) { /* element is not in children, so raise exception */ - PyErr_SetString( - PyExc_ValueError, - "list.remove(x): x not in list" - ); + PyErr_Format(PyExc_ValueError, "list.remove(%0.100R): element not in list", element); return NULL; } diff -r 63b45c959a2a Modules/arraymodule.c --- a/Modules/arraymodule.c Sun Nov 04 07:00:04 2012 +0200 +++ b/Modules/arraymodule.c Sun Nov 04 09:18:00 2012 -0800 @@ -999,7 +999,7 @@ else if (cmp < 0) return NULL; } - PyErr_SetString(PyExc_ValueError, "array.index(x): x not in list"); + PyErr_Format(PyExc_ValueError, "array.index(%0.100R): element not in list", v); return NULL; } diff -r 63b45c959a2a Objects/listobject.c --- a/Objects/listobject.c Sun Nov 04 07:00:04 2012 +0200 +++ b/Objects/listobject.c Sun Nov 04 09:18:00 2012 -0800 @@ -2161,7 +2161,7 @@ else if (cmp < 0) return NULL; } - PyErr_Format(PyExc_ValueError, "%R is not in list", v); + PyErr_Format(PyExc_ValueError, "%0.100R is not in list", v); return NULL; } @@ -2197,7 +2197,7 @@ else if (cmp < 0) return NULL; } - PyErr_SetString(PyExc_ValueError, "list.remove(x): x not in list"); + PyErr_Format(PyExc_ValueError, "list.remove(%0.100R): element is not in list", v); return NULL; } diff -r 63b45c959a2a Objects/tupleobject.c --- a/Objects/tupleobject.c Sun Nov 04 07:00:04 2012 +0200 +++ b/Objects/tupleobject.c Sun Nov 04 09:18:00 2012 -0800 @@ -522,7 +522,7 @@ else if (cmp < 0) return NULL; } - PyErr_SetString(PyExc_ValueError, "tuple.index(x): x not in tuple"); + PyErr_Format(PyExc_ValueError, "tuple.index(%0.100R): element is not in tuple", v); return NULL; }