From d4df8f4925ae6e4875b521f1c35571f0b51e405a Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Mon, 4 Jan 2016 13:13:39 +0000
Subject: [PATCH] py/objstr: In str.format, handle case of no format spec for
 string arg.

Handles, eg, "{:>20}".format("foo"), where there is no explicit spec for
the type of the argument.
---
 py/objstr.c                   | 5 +----
 tests/basics/string_format.py | 4 ++++
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/py/objstr.c b/py/objstr.c
index 8839acbf9..c4335bbac 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -1259,10 +1259,7 @@ mp_obj_t mp_obj_str_format(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwa
             }
 
             switch (type) {
-                case '\0':
-                    mp_obj_print_helper(&print, arg, PRINT_STR);
-                    break;
-
+                case '\0': // no explicit format type implies 's'
                 case 's': {
                     mp_uint_t slen;
                     const char *s = mp_obj_str_get_data(arg, &slen);
diff --git a/tests/basics/string_format.py b/tests/basics/string_format.py
index d8724c947..7fb53cb49 100644
--- a/tests/basics/string_format.py
+++ b/tests/basics/string_format.py
@@ -62,6 +62,10 @@ test("{:@<6d}",  -123)
 test("{:@=6d}",  -123)
 test("{:06d}",  -123)
 
+test("{:>20}", "foo")
+test("{:^20}", "foo")
+test("{:<20}", "foo")
+
 print("{foo}/foo".format(foo="bar"))
 print("{}".format(123, foo="bar"))
 print("{}-{foo}".format(123, foo="bar"))
-- 
GitLab