summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--ports/unix/mpconfigport.h3
-rw-r--r--py/modthread.c8
-rw-r--r--py/mpconfig.h5
-rw-r--r--py/warning.c6
-rwxr-xr-xtests/run-tests4
5 files changed, 17 insertions, 9 deletions
diff --git a/ports/unix/mpconfigport.h b/ports/unix/mpconfigport.h
index b557f3d448..50b979279a 100644
--- a/ports/unix/mpconfigport.h
+++ b/ports/unix/mpconfigport.h
@@ -145,8 +145,11 @@
// names in exception messages (may require more RAM).
#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_DETAILED)
#define MICROPY_WARNINGS (1)
+#define MICROPY_ERROR_PRINTER (&mp_stderr_print)
#define MICROPY_PY_STR_BYTES_CMP_WARN (1)
+extern const struct _mp_print_t mp_stderr_print;
+
// Define to 1 to use undertested inefficient GC helper implementation
// (if more efficient arch-specific one is not available).
#ifndef MICROPY_GCREGS_SETJMP
diff --git a/py/modthread.c b/py/modthread.c
index bf74128e81..cb071d0f86 100644
--- a/py/modthread.c
+++ b/py/modthread.c
@@ -192,10 +192,10 @@ STATIC void *thread_entry(void *args_in) {
// swallow exception silently
} else {
// print exception out
- mp_printf(&mp_plat_print, "Unhandled exception in thread started by ");
- mp_obj_print_helper(&mp_plat_print, args->fun, PRINT_REPR);
- mp_printf(&mp_plat_print, "\n");
- mp_obj_print_exception(&mp_plat_print, MP_OBJ_FROM_PTR(exc));
+ mp_printf(MICROPY_ERROR_PRINTER, "Unhandled exception in thread started by ");
+ mp_obj_print_helper(MICROPY_ERROR_PRINTER, args->fun, PRINT_REPR);
+ mp_printf(MICROPY_ERROR_PRINTER, "\n");
+ mp_obj_print_exception(MICROPY_ERROR_PRINTER, MP_OBJ_FROM_PTR(exc));
}
}
diff --git a/py/mpconfig.h b/py/mpconfig.h
index b93f851d6c..44de3beebe 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -533,6 +533,11 @@ typedef long long mp_longint_impl_t;
#define MICROPY_WARNINGS (0)
#endif
+// This macro is used when printing runtime warnings and errors
+#ifndef MICROPY_ERROR_PRINTER
+#define MICROPY_ERROR_PRINTER (&mp_plat_print)
+#endif
+
// Float and complex implementation
#define MICROPY_FLOAT_IMPL_NONE (0)
#define MICROPY_FLOAT_IMPL_FLOAT (1)
diff --git a/py/warning.c b/py/warning.c
index 46b31ecca7..12d0f9c99b 100644
--- a/py/warning.c
+++ b/py/warning.c
@@ -35,9 +35,9 @@
void mp_warning(const char *msg, ...) {
va_list args;
va_start(args, msg);
- mp_print_str(&mp_plat_print, "Warning: ");
- mp_vprintf(&mp_plat_print, msg, args);
- mp_print_str(&mp_plat_print, "\n");
+ mp_print_str(MICROPY_ERROR_PRINTER, "Warning: ");
+ mp_vprintf(MICROPY_ERROR_PRINTER, msg, args);
+ mp_print_str(MICROPY_ERROR_PRINTER, "\n");
va_end(args);
}
diff --git a/tests/run-tests b/tests/run-tests
index 568d99f8e8..23fc3d9102 100755
--- a/tests/run-tests
+++ b/tests/run-tests
@@ -103,7 +103,7 @@ def run_micropython(pyb, args, test_file, is_special=False):
os.close(master)
os.close(slave)
else:
- output_mupy = subprocess.check_output(args + [test_file])
+ output_mupy = subprocess.check_output(args + [test_file], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError:
return b'CRASH'
@@ -124,7 +124,7 @@ def run_micropython(pyb, args, test_file, is_special=False):
# run the actual test
try:
- output_mupy = subprocess.check_output(cmdlist)
+ output_mupy = subprocess.check_output(cmdlist, stderr=subprocess.STDOUT)
except subprocess.CalledProcessError:
output_mupy = b'CRASH'