diff -r 63b45c959a2a Lib/test/test_array.py --- a/Lib/test/test_array.py Sun Nov 04 07:00:04 2012 +0200 +++ b/Lib/test/test_array.py Sat Nov 10 20:38:41 2012 -0800 @@ -94,6 +94,14 @@ self.assertRaises(ValueError, array_reconstructor, array.array, "d", 16, b"a") + + def test_issue13349(self): + a = array.array('i',[1,2,3,4,5]) + item = 6 + with self.assertRaises(ValueError) as ve: + a.remove(item) + self.assertIn(repr(item), str(ve.exception)) + def test_numbers(self): testcases = ( (['B', 'H', 'I', 'L'], UNSIGNED_INT8, '=BBBB', 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 Sat Nov 10 20:38:41 2012 -0800 @@ -332,6 +332,13 @@ d.clear() # clear an emtpy deque self.assertEqual(list(d), []) + def test_issue13349(self): + dq = deque('abc') + item = 't' + with self.assertRaises(ValueError) as ve: + dq.remove(item) + self.assertIn(item, str(ve.exception)) + def test_remove(self): d = deque('abcdefghcij') d.remove('c') diff -r 63b45c959a2a Lib/test/test_list.py --- a/Lib/test/test_list.py Sun Nov 04 07:00:04 2012 +0200 +++ b/Lib/test/test_list.py Sat Nov 10 20:38:41 2012 -0800 @@ -106,6 +106,13 @@ with self.assertRaises(TypeError): (3,) + L([1,2]) + def test_issue13349(self): + lst = list(range(10)) + item = 15 + with self.assertRaises(ValueError) as ve: + lst.remove(item) + self.assertIn(str(item), str(ve.exception)) + def test_main(verbose=None): support.run_unittest(ListTest) diff -r 63b45c959a2a Lib/test/test_tuple.py --- a/Lib/test/test_tuple.py Sun Nov 04 07:00:04 2012 +0200 +++ b/Lib/test/test_tuple.py Sat Nov 10 20:38:41 2012 -0800 @@ -18,6 +18,19 @@ self.assertEqual(tuple(''), ()) self.assertEqual(tuple('spam'), ('s', 'p', 'a', 'm')) + def test_issue13349(self): + tpl = ('a', 'b', 'c') + msg_fmt_len = len('tuple.index(..): element not in tuple') + item = " ".join([str(i) for i in range(1000)]) + with self.assertRaises(ValueError) as ve: + tpl.index(item) + self.assertIn(item[:99], str(ve.exception)) + self.assertGreaterEqual(100 + msg_fmt_len, len(str(ve.exception))) + item = "foo" + with self.assertRaises(ValueError) as ve: + tpl.index(item) + self.assertIn(item, str(ve.exception)) + def test_truth(self): super().test_truth() self.assertTrue(not ()) 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 Sat Nov 10 20:38:41 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,14 @@ 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("") + item = ET.Element("subtag") + with self.assertRaises(ValueError) as ve: + elem.remove(item) + self.assertIn(repr(item), str(ve.exception)) 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, "element.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, "element.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 Sat Nov 10 20:38:41 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 array", v); return NULL; } @@ -1041,7 +1041,7 @@ else if (cmp < 0) return NULL; } - PyErr_SetString(PyExc_ValueError, "array.remove(x): x not in list"); + PyErr_Format(PyExc_ValueError, "array.remove(%0.100R): element not in array", 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 Sat Nov 10 20:38:41 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 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 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 Sat Nov 10 20:38:41 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(%.100R): element not in tuple", v); return NULL; }