tests/unix: Add coverage test for VM executing invalid bytecode.
This commit is contained in:
parent
a9f6d49218
commit
d3cac18d49
@ -11,6 +11,7 @@
|
|||||||
#include "py/formatfloat.h"
|
#include "py/formatfloat.h"
|
||||||
#include "py/stream.h"
|
#include "py/stream.h"
|
||||||
#include "py/binary.h"
|
#include "py/binary.h"
|
||||||
|
#include "py/bc.h"
|
||||||
|
|
||||||
#if defined(MICROPY_UNIX_COVERAGE)
|
#if defined(MICROPY_UNIX_COVERAGE)
|
||||||
|
|
||||||
@ -350,6 +351,23 @@ STATIC mp_obj_t extra_coverage(void) {
|
|||||||
mp_printf(&mp_plat_print, "%.0lf\n", dar[0]);
|
mp_printf(&mp_plat_print, "%.0lf\n", dar[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VM
|
||||||
|
{
|
||||||
|
mp_printf(&mp_plat_print, "# VM\n");
|
||||||
|
|
||||||
|
// call mp_execute_bytecode with invalide bytecode (should raise NotImplementedError)
|
||||||
|
mp_obj_fun_bc_t fun_bc;
|
||||||
|
fun_bc.bytecode = (const byte*)"\x01"; // just needed for n_state
|
||||||
|
mp_code_state_t *code_state = m_new_obj_var(mp_code_state_t, mp_obj_t, 1);
|
||||||
|
code_state->fun_bc = &fun_bc;
|
||||||
|
code_state->ip = (const byte*)"\x00"; // just needed for an invalid opcode
|
||||||
|
code_state->sp = &code_state->state[0];
|
||||||
|
code_state->exc_sp = NULL;
|
||||||
|
code_state->old_globals = NULL;
|
||||||
|
mp_vm_return_kind_t ret = mp_execute_bytecode(code_state, MP_OBJ_NULL);
|
||||||
|
mp_printf(&mp_plat_print, "%d %d\n", ret, mp_obj_get_type(code_state->state[0]) == &mp_type_NotImplementedError);
|
||||||
|
}
|
||||||
|
|
||||||
// scheduler
|
// scheduler
|
||||||
{
|
{
|
||||||
mp_printf(&mp_plat_print, "# scheduler\n");
|
mp_printf(&mp_plat_print, "# scheduler\n");
|
||||||
|
@ -58,6 +58,8 @@ Warning: test
|
|||||||
# binary
|
# binary
|
||||||
122
|
122
|
||||||
456
|
456
|
||||||
|
# VM
|
||||||
|
2 1
|
||||||
# scheduler
|
# scheduler
|
||||||
sched(0)=1
|
sched(0)=1
|
||||||
sched(1)=1
|
sched(1)=1
|
||||||
|
Loading…
Reference in New Issue
Block a user