Skip to content

Instantly share code, notes, and snippets.

@process1183
Created October 19, 2017 23:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save process1183/1c435436ca5a228c0b114d01045925ba to your computer and use it in GitHub Desktop.
Save process1183/1c435436ca5a228c0b114d01045925ba to your computer and use it in GitHub Desktop.
circuitpython remount tester
-----[ Test start ]-----
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount()
error: "function missing 1 required positional arguments"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/")
error: "'readonly' argument required"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", False)
error: "None"
can read "testfile": True, error: "None"
can write "testfile": True, error: "None"
----------------
storage.remount("/", True)
error: "None"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", readonly=False)
error: "None"
can read "testfile": True, error: "None"
can write "testfile": True, error: "None"
----------------
storage.remount("/", readonly=True)
error: "None"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", False, readonly=True)
error: "extra keyword arguments given"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", True, readonly=False)
error: "extra keyword arguments given"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", False, True)
error: "extra positional arguments given"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", readonly=False, False)
error: "non-keyword arg after keyword arg"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
storage.remount("/", readonly=False, derp=True)
error: "extra keyword arguments given"
can read "testfile": True, error: "None"
can write "testfile": False, error: "30"
----------------
-----[ Test end ]-----
import board
import digitalio
import os
import storage
import sys
import time
def read_test(path):
try:
with open(path, "rb") as inf:
data = inf.read()
return (True, None)
except Exception as e:
return (False, e)
def write_test(path):
try:
with open(path, "wb") as outf:
outf.write(b"test")
return (True, None)
except Exception as e:
return (False, e)
def test(path):
report_str = "can %%s \"%s\": %%s, error: \"%%s\"" %(path)
read_result, read_err = read_test(path)
write_result, write_err = write_test(path)
return [
report_str %("read", read_result, read_err),
report_str %("write", write_result, write_err)
]
def main():
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
led.value = 1
mnt = "/"
testfile = "testfile"
logfile = "log.txt"
if logfile in os.listdir(mnt):
print("%s exists, not running tests." %(logfile))
led.value = 0
sys.exit()
parameters = (
"",
"\"%s\"" %(mnt),
"\"%s\", False" %(mnt),
"\"%s\", True" %(mnt),
"\"%s\", readonly=False" %(mnt),
"\"%s\", readonly=True" %(mnt),
"\"%s\", False, readonly=True" %(mnt),
"\"%s\", True, readonly=False" %(mnt),
"\"%s\", False, True" %(mnt),
"\"%s\", readonly=False, False" %(mnt),
"\"%s\", readonly=False, derp=True" %(mnt),
)
log = []
log.append("-----[ Test start ]-----")
log.extend(test(testfile))
log.append("----------------")
for p in parameters:
# yes, eval is bad, but I don't want to repeat this test block len(parameters) times
eval_str = "storage.remount(%s)" %(p)
log.append(eval_str)
try:
eval(eval_str)
err = None
except Exception as e:
err = e
log.append(" error: \"%s\"" %(err))
log.extend(test(testfile))
log.append("----------------")
time.sleep(0.5)
log.append("-----[ Test end ]-----")
try:
storage.remount('/', False)
with open(logfile, "wb") as outf:
outf.write('\n'.join(log))
storage.remount('/', True)
logfile_write_fail = False
except RuntimeError:
logfile_write_fail = True
led.value = 0
if logfile_write_fail:
while 1:
print('\n'.join(log))
print("\n\n")
time.sleep(1)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment