diff --git a/py/mpprint.c b/py/mpprint.c
index cb49b1227a3b6c321392defe304105e8e4459669..97ea33ad2a73d020b2eb7bd21f4d049bda1cb7d8 100644
--- a/py/mpprint.c
+++ b/py/mpprint.c
@@ -537,10 +537,12 @@ int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args) {
                     chrs += mp_print_int(print, arg_value, *fmt == 'd', 10, 'a', flags, fill, width);
                     break;
                 }
-                // fall through to default case to print unknown format char
+                assert(!"unsupported fmt char");
             }
             #endif
             default:
+                // if it's not %% then it's an unsupported format character
+                assert(*fmt == '%' || !"unsupported fmt char");
                 print->print_strn(print->data, fmt, 1);
                 chrs += 1;
                 break;
diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp
index db282b152c72f57655f96e61134f5235266a16d4..44749c45ea8d44210b84fcf6ff339f0559025fc4 100644
--- a/tests/unix/extra_coverage.py.exp
+++ b/tests/unix/extra_coverage.py.exp
@@ -7,7 +7,6 @@ ab abc
 
 false true
 (null)
-t
 -2147483648
 2147483648
 80000000
diff --git a/unix/coverage.c b/unix/coverage.c
index 9d53725543ec0d51c293319b7b0c050f06eb1d2c..ce1da50e2f735e7b0e3832b1b2d604043602a0f1 100644
--- a/unix/coverage.c
+++ b/unix/coverage.c
@@ -12,7 +12,6 @@ STATIC mp_obj_t extra_coverage(void) {
     // mp_printf (used by ports that don't have a native printf)
     {
         mp_printf(&mp_plat_print, "# mp_printf\n");
-        mp_printf(&mp_plat_print, "%"); // nothing after percent
         mp_printf(&mp_plat_print, "%d %+d % d\n", -123, 123, 123); // sign
         mp_printf(&mp_plat_print, "%05d\n", -123); // negative number with zero padding
         mp_printf(&mp_plat_print, "%ld\n", 123); // long
@@ -21,7 +20,6 @@ STATIC mp_obj_t extra_coverage(void) {
         mp_printf(&mp_plat_print, "%.*s\n", -1, "abc"); // negative string precision
         mp_printf(&mp_plat_print, "%b %b\n", 0, 1); // bools
         mp_printf(&mp_plat_print, "%s\n", NULL); // null string
-        mp_printf(&mp_plat_print, "%t\n"); // non-format char
         mp_printf(&mp_plat_print, "%d\n", 0x80000000); // should print signed
         mp_printf(&mp_plat_print, "%u\n", 0x80000000); // should print unsigned
         mp_printf(&mp_plat_print, "%x\n", 0x80000000); // should print unsigned