mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
startswith and endswith don't accept None as slice index. Patch by Torsten Becker. (closes #11828)
This commit is contained in:
parent
d07eaf177c
commit
ac4515063c
8 changed files with 197 additions and 64 deletions
|
@ -1156,6 +1156,63 @@ class MixinStrUnicodeUserStringTest:
|
|||
self.checkraises(ValueError, S, 'rpartition', '')
|
||||
self.checkraises(TypeError, S, 'rpartition', None)
|
||||
|
||||
def test_none_arguments(self):
|
||||
# issue 11828
|
||||
s = 'hello'
|
||||
self.checkequal(2, s, 'find', 'l', None)
|
||||
self.checkequal(3, s, 'find', 'l', -2, None)
|
||||
self.checkequal(2, s, 'find', 'l', None, -2)
|
||||
self.checkequal(0, s, 'find', 'h', None, None)
|
||||
|
||||
self.checkequal(3, s, 'rfind', 'l', None)
|
||||
self.checkequal(3, s, 'rfind', 'l', -2, None)
|
||||
self.checkequal(2, s, 'rfind', 'l', None, -2)
|
||||
self.checkequal(0, s, 'rfind', 'h', None, None)
|
||||
|
||||
self.checkequal(2, s, 'index', 'l', None)
|
||||
self.checkequal(3, s, 'index', 'l', -2, None)
|
||||
self.checkequal(2, s, 'index', 'l', None, -2)
|
||||
self.checkequal(0, s, 'index', 'h', None, None)
|
||||
|
||||
self.checkequal(3, s, 'rindex', 'l', None)
|
||||
self.checkequal(3, s, 'rindex', 'l', -2, None)
|
||||
self.checkequal(2, s, 'rindex', 'l', None, -2)
|
||||
self.checkequal(0, s, 'rindex', 'h', None, None)
|
||||
|
||||
self.checkequal(2, s, 'count', 'l', None)
|
||||
self.checkequal(1, s, 'count', 'l', -2, None)
|
||||
self.checkequal(1, s, 'count', 'l', None, -2)
|
||||
self.checkequal(0, s, 'count', 'x', None, None)
|
||||
|
||||
self.checkequal(True, s, 'endswith', 'o', None)
|
||||
self.checkequal(True, s, 'endswith', 'lo', -2, None)
|
||||
self.checkequal(True, s, 'endswith', 'l', None, -2)
|
||||
self.checkequal(False, s, 'endswith', 'x', None, None)
|
||||
|
||||
self.checkequal(True, s, 'startswith', 'h', None)
|
||||
self.checkequal(True, s, 'startswith', 'l', -2, None)
|
||||
self.checkequal(True, s, 'startswith', 'h', None, -2)
|
||||
self.checkequal(False, s, 'startswith', 'x', None, None)
|
||||
|
||||
def test_find_etc_raise_correct_error_messages(self):
|
||||
# issue 11828
|
||||
s = 'hello'
|
||||
x = 'x'
|
||||
self.assertRaisesRegexp(TypeError, r'^find\(', s.find,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'^rfind\(', s.rfind,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'^index\(', s.index,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'^rindex\(', s.rindex,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'^count\(', s.count,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'^startswith\(', s.startswith,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'^endswith\(', s.endswith,
|
||||
x, None, None, None)
|
||||
|
||||
|
||||
class MixinStrUnicodeTest:
|
||||
# Additional tests that only work with str and unicode.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue