From 75aa7befec5d3afce2c5a970d8644299d367f6fe Mon Sep 17 00:00:00 2001
From: Rami Ali <flowergrass@users.noreply.github.com>
Date: Thu, 29 Dec 2016 18:07:38 +1100
Subject: [PATCH] tests/unix: Improve runtime_utils.c test coverage.

---
 tests/unix/extra_coverage.py.exp |  3 +++
 unix/coverage.c                  | 16 ++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp
index ea73a54e4..2b3f68467 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 6a1b43fdc..2abfc870f 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);
-- 
GitLab