diff -r 253c31930b32 Lib/test/list_tests.py --- a/Lib/test/list_tests.py Sat Jul 26 00:58:55 2014 +0200 +++ b/Lib/test/list_tests.py Sat Jul 26 10:51:42 2014 +0200 @@ -30,6 +30,12 @@ self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) + def test_getitem_error(self): + msg = "list indices must be integers or slices" + with self.assertRaisesRegex(TypeError, msg): + a = [] + a['a'] = "python" + def test_repr(self): l0 = [] l2 = [0, 1, 2] @@ -120,6 +126,10 @@ a[-1] = 9 self.assertEqual(a, self.type2test([5,6,7,8,9])) + msg = "list indices must be integers or slices" + with self.assertRaisesRegex(TypeError, msg): + a['a'] = "python" + def test_delitem(self): a = self.type2test([0, 1]) del a[1] diff -r 253c31930b32 Lib/test/test_bytes.py --- a/Lib/test/test_bytes.py Sat Jul 26 00:58:55 2014 +0200 +++ b/Lib/test/test_bytes.py Sat Jul 26 10:51:42 2014 +0200 @@ -699,6 +699,11 @@ class BytesTest(BaseBytesTest, unittest.TestCase): type2test = bytes + def test_getitem_error(self): + msg = "byte indices must be integers or slices" + with self.assertRaisesRegex(TypeError, msg): + b'python'['a'] + def test_buffer_is_readonly(self): fd = os.dup(sys.stdin.fileno()) with open(fd, "rb", buffering=0) as f: @@ -753,6 +758,17 @@ class ByteArrayTest(BaseBytesTest, unittest.TestCase): type2test = bytearray + def test_getitem_error(self): + msg = "bytearray indices must be integers or slices" + with self.assertRaisesRegex(TypeError, msg): + bytearray(b'python')['a'] + + def test_setitem_error(self): + msg = "bytearray indices must be integers or slices" + with self.assertRaisesRegex(TypeError, msg): + b = bytearray(b'python') + b['a'] = "python" + def test_nohash(self): self.assertRaises(TypeError, hash, bytearray()) diff -r 253c31930b32 Lib/test/test_tuple.py --- a/Lib/test/test_tuple.py Sat Jul 26 00:58:55 2014 +0200 +++ b/Lib/test/test_tuple.py Sat Jul 26 10:51:42 2014 +0200 @@ -6,6 +6,11 @@ class TupleTest(seq_tests.CommonTest): type2test = tuple + def test_getitem_error(self): + msg = "tuple indices must be integers or slices" + with self.assertRaisesRegex(TypeError, msg): + ()['a'] + def test_constructors(self): super().test_constructors() # calling built-in types without argument must return empty diff -r 253c31930b32 Objects/bytearrayobject.c --- a/Objects/bytearrayobject.c Sat Jul 26 00:58:55 2014 +0200 +++ b/Objects/bytearrayobject.c Sat Jul 26 10:51:42 2014 +0200 @@ -440,7 +440,8 @@ } } else { - PyErr_SetString(PyExc_TypeError, "bytearray indices must be integers"); + PyErr_SetString(PyExc_TypeError, + "bytearray indices must be integers or slices"); return NULL; } } @@ -645,7 +646,8 @@ } } else { - PyErr_SetString(PyExc_TypeError, "bytearray indices must be integer"); + PyErr_SetString(PyExc_TypeError, + "bytearray indices must be integers or slices"); return -1; } diff -r 253c31930b32 Objects/bytesobject.c --- a/Objects/bytesobject.c Sat Jul 26 00:58:55 2014 +0200 +++ b/Objects/bytesobject.c Sat Jul 26 10:51:42 2014 +0200 @@ -994,7 +994,7 @@ } else { PyErr_Format(PyExc_TypeError, - "byte indices must be integers, not %.200s", + "byte indices must be integers or slices, not %.200s", Py_TYPE(item)->tp_name); return NULL; } diff -r 253c31930b32 Objects/listobject.c --- a/Objects/listobject.c Sat Jul 26 00:58:55 2014 +0200 +++ b/Objects/listobject.c Sat Jul 26 10:51:42 2014 +0200 @@ -2444,7 +2444,7 @@ } else { PyErr_Format(PyExc_TypeError, - "list indices must be integers, not %.200s", + "list indices must be integers or slices, not %.200s", item->ob_type->tp_name); return NULL; } @@ -2608,7 +2608,7 @@ } else { PyErr_Format(PyExc_TypeError, - "list indices must be integers, not %.200s", + "list indices must be integers or slices, not %.200s", item->ob_type->tp_name); return -1; } diff -r 253c31930b32 Objects/tupleobject.c --- a/Objects/tupleobject.c Sat Jul 26 00:58:55 2014 +0200 +++ b/Objects/tupleobject.c Sat Jul 26 10:51:42 2014 +0200 @@ -746,7 +746,7 @@ } else { PyErr_Format(PyExc_TypeError, - "tuple indices must be integers, not %.200s", + "tuple indices must be integers or slices, not %.200s", Py_TYPE(item)->tp_name); return NULL; }