mirror of
https://github.com/micropython/micropython.git
synced 2025-07-21 13:01:10 +02:00
66 lines
1.1 KiB
Python
66 lines
1.1 KiB
Python
# test VFS functionality without any particular filesystem type
|
|
|
|
try:
|
|
import os, vfs
|
|
except ImportError:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
|
|
class Filesystem:
|
|
def __init__(self, id, paths=[]):
|
|
self.id = id
|
|
self.paths = paths
|
|
|
|
def mount(self, readonly, mksfs):
|
|
print("mount", self)
|
|
|
|
def umount(self):
|
|
print("umount", self)
|
|
|
|
def stat(self, path):
|
|
if path in self.paths:
|
|
return (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
else:
|
|
raise OSError
|
|
|
|
statvfs = stat
|
|
|
|
def open(self, path, mode):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "Filesystem(%d)" % self.id
|
|
|
|
|
|
# first we umount any existing mount points the target may have
|
|
try:
|
|
vfs.umount("/")
|
|
except OSError:
|
|
pass
|
|
for path in os.listdir("/"):
|
|
vfs.umount("/" + path)
|
|
|
|
|
|
print(vfs.mount())
|
|
|
|
vfs.mount(Filesystem(1), "/foo")
|
|
|
|
print(vfs.mount())
|
|
|
|
vfs.mount(Filesystem(2), "/bar/baz")
|
|
|
|
print(vfs.mount())
|
|
|
|
vfs.mount(Filesystem(3), "/bar")
|
|
|
|
print(vfs.mount())
|
|
|
|
vfs.umount("/bar/baz")
|
|
|
|
print(vfs.mount())
|
|
|
|
vfs.mount(Filesystem(4), "/")
|
|
|
|
print(vfs.mount())
|