diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2023-06-29 15:52:03 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2023-07-21 19:32:42 +1000 |
commit | 8b315ef0d82a31991def597906f7f24bd39c6e23 (patch) | |
tree | f0f40f656a1fd2e54671e17a1635aa384c1a4580 /tests/extmod/deflate_stream_error.py | |
parent | 3533924c36ae85ce6e8bf8598dd71cf16bbdb10b (diff) |
tests/extmod: Add deflate.DeflateIO tests.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'tests/extmod/deflate_stream_error.py')
-rw-r--r-- | tests/extmod/deflate_stream_error.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/extmod/deflate_stream_error.py b/tests/extmod/deflate_stream_error.py new file mode 100644 index 000000000..aee6b2803 --- /dev/null +++ b/tests/extmod/deflate_stream_error.py @@ -0,0 +1,89 @@ +# Test deflate module with stream errors. + +try: + # Check if deflate & IOBase are available. + import deflate, io + + io.IOBase +except (ImportError, AttributeError): + print("SKIP") + raise SystemExit + +# Check if compression is enabled. +if not hasattr(deflate.DeflateIO, "write"): + print("SKIP") + raise SystemExit + +formats = (deflate.RAW, deflate.ZLIB, deflate.GZIP) + +# Test error on read when decompressing. + + +class Stream(io.IOBase): + def readinto(self, buf): + print("Stream.readinto", len(buf)) + return -1 + + +try: + deflate.DeflateIO(Stream()).read() +except OSError as er: + print(repr(er)) + +# Test error on write when compressing. + + +class Stream(io.IOBase): + def write(self, buf): + print("Stream.write", buf) + return -1 + + +for format in formats: + try: + deflate.DeflateIO(Stream(), format).write("a") + except OSError as er: + print(repr(er)) + +# Test write after close. + + +class Stream(io.IOBase): + def write(self, buf): + print("Stream.write", buf) + return -1 + + def ioctl(self, cmd, arg): + print("Stream.ioctl", cmd, arg) + return 0 + + +try: + d = deflate.DeflateIO(Stream(), deflate.RAW, 0, True) + d.close() + d.write("a") +except OSError as er: + print(repr(er)) + +# Test error on write when closing. + + +class Stream(io.IOBase): + def __init__(self): + self.num_writes = 0 + + def write(self, buf): + print("Stream.write", buf) + if self.num_writes >= 4: + return -1 + self.num_writes += 1 + return len(buf) + + +for format in formats: + d = deflate.DeflateIO(Stream(), format) + d.write("a") + try: + d.close() + except OSError as er: + print(repr(er)) |