Created
October 19, 2017 23:37
-
-
Save process1183/1c435436ca5a228c0b114d01045925ba to your computer and use it in GitHub Desktop.
circuitpython remount tester
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----[ 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 ]----- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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