Skip to content

Commit 38a9359

Browse files
hosakadpgeorge
authored andcommitted
tests/extmod/vfs_fat_fsusermount: Improve fsusermount test coverage.
1 parent 67b6d9d commit 38a9359

2 files changed

Lines changed: 103 additions & 0 deletions

File tree

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import sys
2+
import uos
3+
import uerrno
4+
try:
5+
uos.VfsFat
6+
except AttributeError:
7+
print("SKIP")
8+
sys.exit()
9+
10+
11+
class RAMFS:
12+
13+
SEC_SIZE = 512
14+
15+
def __init__(self, blocks):
16+
self.data = bytearray(blocks * self.SEC_SIZE)
17+
18+
def readblocks(self, n, buf):
19+
#print("readblocks(%s, %x(%d))" % (n, id(buf), len(buf)))
20+
for i in range(len(buf)):
21+
buf[i] = self.data[n * self.SEC_SIZE + i]
22+
23+
def writeblocks(self, n, buf):
24+
#print("writeblocks(%s, %x)" % (n, id(buf)))
25+
for i in range(len(buf)):
26+
self.data[n * self.SEC_SIZE + i] = buf[i]
27+
28+
def ioctl(self, op, arg):
29+
#print("ioctl(%d, %r)" % (op, arg))
30+
if op == 4: # BP_IOCTL_SEC_COUNT
31+
return len(self.data) // self.SEC_SIZE
32+
if op == 5: # BP_IOCTL_SEC_SIZE
33+
return self.SEC_SIZE
34+
35+
36+
try:
37+
bdev = RAMFS(48)
38+
except MemoryError:
39+
print("SKIP")
40+
sys.exit()
41+
42+
# can't mkfs readonly device
43+
try:
44+
uos.vfs_mkfs(bdev, "/ramdisk", readonly=True)
45+
except OSError as e:
46+
print(e)
47+
48+
# mount before mkfs
49+
try:
50+
uos.vfs_mount(bdev, "/ramdisk")
51+
except OSError as e:
52+
print(e)
53+
54+
# invalid umount
55+
try:
56+
uos.vfs_umount("/ramdisk")
57+
except OSError as e:
58+
print(e.args[0] == uerrno.EINVAL)
59+
60+
try:
61+
uos.vfs_mount(None, "/ramdisk")
62+
except OSError as e:
63+
print(e)
64+
65+
try:
66+
uos.vfs_mkfs(None, "/ramdisk")
67+
except OSError as e:
68+
print(e)
69+
70+
# valid mkfs/mount
71+
uos.vfs_mkfs(bdev, "/ramdisk")
72+
uos.vfs_mount(bdev, "/ramdisk")
73+
74+
# umount by path
75+
uos.vfs_umount("/ramdisk")
76+
77+
# readonly mount
78+
uos.vfs_mount(bdev, "/ramdisk", readonly=True)
79+
vfs = uos.VfsFat(bdev, "/ramdisk")
80+
try:
81+
f = vfs.open("file.txt", "w")
82+
except OSError as e:
83+
print("EROFS:", e.args[0] == 30) # uerrno.EROFS
84+
85+
# device is None == umount
86+
uos.vfs_mount(None, "/ramdisk")
87+
88+
# max mounted devices
89+
dev = []
90+
try:
91+
for i in range(0,4):
92+
dev.append(RAMFS(48))
93+
uos.vfs_mkfs(dev[i], "/ramdisk" + str(i))
94+
uos.vfs_mount(dev[i], "/ramdisk" + str(i))
95+
except OSError as e:
96+
print(e)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
can't mkfs
2+
can't mount
3+
True
4+
can't umount
5+
can't umount
6+
EROFS: True
7+
too many devices mounted

0 commit comments

Comments
 (0)