diff options
author | Damien George <damien.p.george@gmail.com> | 2020-02-06 20:26:29 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2020-02-07 16:08:29 +1100 |
commit | eaf30c516af87104b7fbba7fcd557d097a4951f9 (patch) | |
tree | ba46d4c97a37f8d72145930946c59fb1994deb8f | |
parent | 9efb36bfa66d5846c14f21778c25dff7dd733826 (diff) |
tests/unix: Add coverage tests for kbd-intr and scheduler.
-rw-r--r-- | ports/unix/coverage.c | 26 | ||||
-rw-r--r-- | tests/unix/extra_coverage.py.exp | 3 |
2 files changed, 29 insertions, 0 deletions
diff --git a/ports/unix/coverage.c b/ports/unix/coverage.c index 0703d0a33..8978931ed 100644 --- a/ports/unix/coverage.c +++ b/ports/unix/coverage.c @@ -476,6 +476,32 @@ STATIC mp_obj_t extra_coverage(void) { while (mp_sched_num_pending()) { mp_handle_pending(true); } + + // setting the keyboard interrupt and raising it during mp_handle_pending + mp_keyboard_interrupt(); + nlr_buf_t nlr; + if (nlr_push(&nlr) == 0) { + mp_handle_pending(true); + nlr_pop(); + } else { + mp_obj_print_exception(&mp_plat_print, MP_OBJ_FROM_PTR(nlr.ret_val)); + } + + // setting the keyboard interrupt (twice) and cancelling it during mp_handle_pending + mp_keyboard_interrupt(); + mp_keyboard_interrupt(); + mp_handle_pending(false); + + // setting keyboard interrupt and a pending event (intr should be handled first) + mp_sched_schedule(MP_OBJ_FROM_PTR(&mp_builtin_print_obj), MP_OBJ_NEW_SMALL_INT(10)); + mp_keyboard_interrupt(); + if (nlr_push(&nlr) == 0) { + mp_handle_pending(true); + nlr_pop(); + } else { + mp_obj_print_exception(&mp_plat_print, MP_OBJ_FROM_PTR(nlr.ret_val)); + } + mp_handle_pending(true); } // ringbuf diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp index 6130a0651..7d7b7dd9f 100644 --- a/tests/unix/extra_coverage.py.exp +++ b/tests/unix/extra_coverage.py.exp @@ -80,6 +80,9 @@ unlocked 1 2 3 +KeyboardInterrupt: +KeyboardInterrupt: +10 # ringbuf 99 0 98 1 |