diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2014-08-02 05:30:37 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2014-08-02 05:30:37 (GMT) |
commit | ffff1440d118cae189a6c2baf595dda52cdc7c3a (patch) | |
tree | e1664353a0276044933c16879fa59e7521a6044e /Lib | |
parent | 7f9cc9359bdbcc877b2a6f976c8e8bdbc714ce90 (diff) | |
download | cpython-ffff1440d118cae189a6c2baf595dda52cdc7c3a.zip cpython-ffff1440d118cae189a6c2baf595dda52cdc7c3a.tar.gz cpython-ffff1440d118cae189a6c2baf595dda52cdc7c3a.tar.bz2 |
Issue #22077: Improve index error messages for bytearrays, bytes, lists, and
tuples by adding 'or slices'. Added ', not <typename' for bytearrays.
Original patch by Claudiu Popa.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/list_tests.py | 10 | ||||
-rw-r--r-- | Lib/test/test_bytes.py | 16 | ||||
-rw-r--r-- | Lib/test/test_tuple.py | 5 |
3 files changed, 31 insertions, 0 deletions
diff --git a/Lib/test/list_tests.py b/Lib/test/list_tests.py index 42e118b..9069337 100644 --- a/Lib/test/list_tests.py +++ b/Lib/test/list_tests.py @@ -30,6 +30,12 @@ class CommonTest(seq_tests.CommonTest): 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 @@ class CommonTest(seq_tests.CommonTest): 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 --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 43b6c82..db7c1b7 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -699,6 +699,11 @@ class BaseBytesTest: 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.open(__file__, os.O_RDONLY) with open(fd, "rb", buffering=0) as f: @@ -753,6 +758,17 @@ class BytesTest(BaseBytesTest, unittest.TestCase): 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 --git a/Lib/test/test_tuple.py b/Lib/test/test_tuple.py index 14c6430..0b19ea4 100644 --- a/Lib/test/test_tuple.py +++ b/Lib/test/test_tuple.py @@ -6,6 +6,11 @@ import pickle 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 |