tools/mpremote/tests: Add tests for errno behavior.
Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
This commit is contained in:
committed by
Damien George
parent
9a377801dc
commit
cee0419021
38
tools/mpremote/tests/test_errno.sh
Executable file
38
tools/mpremote/tests/test_errno.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Special ErrorFS so the test can induce arbitrary filesystem errors.
|
||||||
|
cat << EOF > "${TMP}/fs.py"
|
||||||
|
import os, vfs, errno
|
||||||
|
|
||||||
|
class ErrorFS:
|
||||||
|
def mount(self, *a, **k):
|
||||||
|
pass
|
||||||
|
def umount(self, *a, **k):
|
||||||
|
pass
|
||||||
|
def chdir(self, *a, **k):
|
||||||
|
pass
|
||||||
|
def open(self, *a, **k):
|
||||||
|
raise self.error
|
||||||
|
|
||||||
|
fs = ErrorFS()
|
||||||
|
vfs.mount(fs, '/fs')
|
||||||
|
os.chdir('/fs')
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$MPREMOTE run "${TMP}/fs.py"
|
||||||
|
|
||||||
|
echo -----
|
||||||
|
$MPREMOTE resume exec "fs.error = Exception()"
|
||||||
|
(
|
||||||
|
$MPREMOTE resume cat :Exception.py || echo "expect error"
|
||||||
|
) 2> >(head -n1 >&2) # discard traceback specifics but keep main error message
|
||||||
|
|
||||||
|
for errno in ENOENT EISDIR EEXIST ENODEV EINVAL EPERM EOPNOTSUPP ; do
|
||||||
|
echo -----
|
||||||
|
$MPREMOTE resume exec "fs.error = OSError(errno.$errno, '')"
|
||||||
|
$MPREMOTE resume cat :$errno.py || echo "expect error"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -----
|
||||||
|
$MPREMOTE resume exec "vfs.umount('/fs')"
|
||||||
25
tools/mpremote/tests/test_errno.sh.exp
Normal file
25
tools/mpremote/tests/test_errno.sh.exp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
-----
|
||||||
|
mpremote: Error with transport:
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: ENOENT.py: No such file or directory.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: EISDIR.py: Is a directory.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: EEXIST.py: File exists.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: ENODEV.py: No such device.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: EINVAL.py: Invalid argument.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: EPERM.py: Operation not permitted.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
|
mpremote: cat: EOPNOTSUPP.py: Operation not supported.
|
||||||
|
expect error
|
||||||
|
-----
|
||||||
Reference in New Issue
Block a user