From 55b11e6d38731ffb1a7378f936c940c61aef8743 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 4 Sep 2015 16:49:56 +0100 Subject: [PATCH] py/objstr: For str.endswith(s, start) raise NotImpl instead of assert. --- py/objstr.c | 4 +++- tests/misc/non_compliant.py | 6 ++++++ tests/misc/non_compliant.py.exp | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/py/objstr.c b/py/objstr.c index 274e76daaa..704fa07e1d 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -699,7 +699,9 @@ STATIC mp_obj_t str_startswith(mp_uint_t n_args, const mp_obj_t *args) { STATIC mp_obj_t str_endswith(mp_uint_t n_args, const mp_obj_t *args) { GET_STR_DATA_LEN(args[0], str, str_len); GET_STR_DATA_LEN(args[1], suffix, suffix_len); - assert(n_args == 2); + if (n_args > 2) { + mp_not_implemented("start/end indices"); + } if (suffix_len > str_len) { return mp_const_false; diff --git a/tests/misc/non_compliant.py b/tests/misc/non_compliant.py index 09abac2388..de84579067 100644 --- a/tests/misc/non_compliant.py +++ b/tests/misc/non_compliant.py @@ -52,6 +52,12 @@ try: except NotImplementedError: print('NotImplementedError') +# str.endswith(s, start) not implemented +try: + 'abc'.endswith('c', 1) +except NotImplementedError: + print('NotImplementedError') + # bytes(...) with keywords not implemented try: bytes('abc', encoding='utf8') diff --git a/tests/misc/non_compliant.py.exp b/tests/misc/non_compliant.py.exp index 9278034aa4..28b1470d7c 100644 --- a/tests/misc/non_compliant.py.exp +++ b/tests/misc/non_compliant.py.exp @@ -8,3 +8,4 @@ NotImplementedError NotImplementedError NotImplementedError NotImplementedError +NotImplementedError