summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2020-04-20 23:59:22 +1000
committerDamien George <damien.p.george@gmail.com>2020-04-27 23:59:09 +1000
commit4fa6d939d653b257341ace6ac8c168564549e4ac (patch)
treefffb168e36c6a7fded5f19b857ea6f4b88e65970
parentbd6ca15444b9bdb8330b45433a848838fa3f2ddb (diff)
downloadmicropython-4fa6d939d653b257341ace6ac8c168564549e4ac.tar.gz
micropython-4fa6d939d653b257341ace6ac8c168564549e4ac.zip
tests/extmod: Add btree test for errors raised by btree DB library.
This test now passes given the previous two commits.
-rw-r--r--tests/extmod/btree_error.py42
-rw-r--r--tests/extmod/btree_error.py.exp6
2 files changed, 48 insertions, 0 deletions
diff --git a/tests/extmod/btree_error.py b/tests/extmod/btree_error.py
new file mode 100644
index 0000000000..00e07ec8c7
--- /dev/null
+++ b/tests/extmod/btree_error.py
@@ -0,0 +1,42 @@
+# Test that errno's propagate correctly through btree module.
+
+try:
+ import btree, uio, uerrno
+
+ uio.IOBase
+except (ImportError, AttributeError):
+ print("SKIP")
+ raise SystemExit
+
+
+class Device(uio.IOBase):
+ def __init__(self, read_ret=0, ioctl_ret=0):
+ self.read_ret = read_ret
+ self.ioctl_ret = ioctl_ret
+
+ def readinto(self, buf):
+ print("read", len(buf))
+ return self.read_ret
+
+ def ioctl(self, cmd, arg):
+ print("ioctl", cmd)
+ return self.ioctl_ret
+
+
+# Invalid pagesize; errno comes from btree library
+try:
+ db = btree.open(Device(), pagesize=511)
+except OSError as er:
+ print("OSError", er.args[0] == uerrno.EINVAL)
+
+# Valid pagesize, device returns error on read; errno comes from Device.readinto
+try:
+ db = btree.open(Device(-1000), pagesize=512)
+except OSError as er:
+ print(repr(er))
+
+# Valid pagesize, device returns error on seek; errno comes from Device.ioctl
+try:
+ db = btree.open(Device(0, -1001), pagesize=512)
+except OSError as er:
+ print(repr(er))
diff --git a/tests/extmod/btree_error.py.exp b/tests/extmod/btree_error.py.exp
new file mode 100644
index 0000000000..168adb80c5
--- /dev/null
+++ b/tests/extmod/btree_error.py.exp
@@ -0,0 +1,6 @@
+OSError True
+read 24
+OSError(1000,)
+read 24
+ioctl 2
+OSError(1001,)