summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/string_fstring.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/string_fstring.py')
-rw-r--r--tests/basics/string_fstring.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/basics/string_fstring.py b/tests/basics/string_fstring.py
index 8907a5c478..1a3960680e 100644
--- a/tests/basics/string_fstring.py
+++ b/tests/basics/string_fstring.py
@@ -61,3 +61,22 @@ except (ValueError, SyntaxError):
print(f"a {1,} b")
print(f"a {x,y,} b")
print(f"a {x,1} b")
+
+# f-strings with conversion specifiers (only support !r and !s).
+a = "123"
+print(f"{a!r}")
+print(f"{a!s}")
+try:
+ eval('print(f"{a!x}")')
+except (ValueError, SyntaxError):
+ # CPython detects this at compile time, MicroPython fails with ValueError
+ # when the str.format is executed.
+ print("ValueError")
+
+# Mixing conversion specifiers with formatting.
+print(f"{a!r:8s}")
+print(f"{a!s:8s}")
+
+# Still allow ! in expressions.
+print(f"{'1' if a != '456' else '0'!r:8s}")
+print(f"{'1' if a != '456' else '0'!s:8s}")