diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp index ea73a54e4ca792f838ef6284f3b69bd3cab43009..2b3f6846713ad3caae3dc05af97cc0c0e155d6c9 100644 --- a/tests/unix/extra_coverage.py.exp +++ b/tests/unix/extra_coverage.py.exp @@ -35,6 +35,9 @@ ementation 12345678 0 0 +# runtime utils +TypeError: can't convert str to int +TypeError: unsupported types for : 'str', 'str' ('0123456789', b'0123456789') 7300 7300 diff --git a/unix/coverage.c b/unix/coverage.c index 6a1b43fdce4b2198e6f96691c73f856ce7471f7a..2abfc870f30f4ed02f88c81a129cf033615f0a69 100644 --- a/unix/coverage.c +++ b/unix/coverage.c @@ -5,6 +5,7 @@ #include "py/runtime.h" #include "py/repl.h" #include "py/mpz.h" +#include "py/builtin.h" #if defined(MICROPY_UNIX_COVERAGE) @@ -114,6 +115,21 @@ STATIC mp_obj_t extra_coverage(void) { mp_printf(&mp_plat_print, "%d\n", mpz_as_uint_checked(&mpz, &value)); } + // runtime utils + { + mp_printf(&mp_plat_print, "# runtime utils\n"); + + // call mp_call_function_1_protected + mp_call_function_1_protected(MP_OBJ_FROM_PTR(&mp_builtin_abs_obj), MP_OBJ_NEW_SMALL_INT(1)); + // call mp_call_function_1_protected with invalid args + mp_call_function_1_protected(MP_OBJ_FROM_PTR(&mp_builtin_abs_obj), mp_obj_new_str("abc", 3, false)); + + // call mp_call_function_2_protected + mp_call_function_2_protected(MP_OBJ_FROM_PTR(&mp_builtin_divmod_obj), MP_OBJ_NEW_SMALL_INT(1), MP_OBJ_NEW_SMALL_INT(1)); + // call mp_call_function_2_protected with invalid args + mp_call_function_2_protected(MP_OBJ_FROM_PTR(&mp_builtin_divmod_obj), mp_obj_new_str("abc", 3, false), mp_obj_new_str("abc", 3, false)); + } + // return a tuple of data for testing on the Python side mp_obj_t items[] = {(mp_obj_t)&str_no_hash_obj, (mp_obj_t)&bytes_no_hash_obj}; return mp_obj_new_tuple(MP_ARRAY_SIZE(items), items);