summaryrefslogtreecommitdiff
path: root/tests/extmod/json_dump_iobase.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/extmod/json_dump_iobase.py')
-rw-r--r--tests/extmod/json_dump_iobase.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/extmod/json_dump_iobase.py b/tests/extmod/json_dump_iobase.py
new file mode 100644
index 000000000..94d317b87
--- /dev/null
+++ b/tests/extmod/json_dump_iobase.py
@@ -0,0 +1,30 @@
+# test json.dump in combination with io.IOBase
+
+try:
+ import io, json
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+if not hasattr(io, "IOBase"):
+ print("SKIP")
+ raise SystemExit
+
+
+# a user stream that only has the write method
+class S(io.IOBase):
+ def __init__(self):
+ self.buf = ""
+
+ def write(self, buf):
+ if type(buf) == bytearray:
+ # uPy passes a bytearray, CPython passes a str
+ buf = str(buf, "ascii")
+ self.buf += buf
+ return len(buf)
+
+
+# dump to the user stream
+s = S()
+json.dump([123, {}], s)
+print(s.buf)