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