-
-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests/extmod: Add tests for verifying FAT and littlefs mtime values.
Verifies mtime timestamps on files match the value returned by time.time(). Also update vfs_fat_ramdisk.py so it doesn't check FAT timestamp of the root, because that may change across runs/ports. Signed-off-by: Damien George <damien@micropython.org>
- Loading branch information
Showing
6 changed files
with
88 additions
and
3 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# Test for VfsFat using a RAM device, mtime feature | ||
|
||
try: | ||
import utime, uos | ||
|
||
utime.time | ||
utime.sleep | ||
uos.VfsFat | ||
except (ImportError, AttributeError): | ||
print("SKIP") | ||
raise SystemExit | ||
|
||
|
||
class RAMBlockDevice: | ||
ERASE_BLOCK_SIZE = 512 | ||
|
||
def __init__(self, blocks): | ||
self.data = bytearray(blocks * self.ERASE_BLOCK_SIZE) | ||
|
||
def readblocks(self, block, buf): | ||
addr = block * self.ERASE_BLOCK_SIZE | ||
for i in range(len(buf)): | ||
buf[i] = self.data[addr + i] | ||
|
||
def writeblocks(self, block, buf): | ||
addr = block * self.ERASE_BLOCK_SIZE | ||
for i in range(len(buf)): | ||
self.data[addr + i] = buf[i] | ||
|
||
def ioctl(self, op, arg): | ||
if op == 4: # block count | ||
return len(self.data) // self.ERASE_BLOCK_SIZE | ||
if op == 5: # block size | ||
return self.ERASE_BLOCK_SIZE | ||
|
||
|
||
def test(bdev, vfs_class): | ||
print("test", vfs_class) | ||
|
||
# Initial format of block device. | ||
vfs_class.mkfs(bdev) | ||
|
||
# construction | ||
vfs = vfs_class(bdev) | ||
|
||
# Create an empty file, should have a timestamp. | ||
current_time = int(utime.time()) | ||
vfs.open("test1", "wt").close() | ||
|
||
# Wait 2 seconds so mtime will increase (FAT has 2 second resolution). | ||
utime.sleep(2) | ||
|
||
# Create another empty file, should have a timestamp. | ||
vfs.open("test2", "wt").close() | ||
|
||
# Stat the files and check mtime is non-zero. | ||
stat1 = vfs.stat("test1") | ||
stat2 = vfs.stat("test2") | ||
print(stat1[8] != 0, stat2[8] != 0) | ||
|
||
# Check that test1 has mtime which matches time.time() at point of creation. | ||
# TODO this currently fails on the unix port because FAT stores timestamps | ||
# in localtime and stat() is UTC based. | ||
# print(current_time - 1 <= stat1[8] <= current_time + 1) | ||
|
||
# Check that test1 is older than test2. | ||
print(stat1[8] < stat2[8]) | ||
|
||
# Unmount. | ||
vfs.umount() | ||
|
||
|
||
bdev = RAMBlockDevice(50) | ||
test(bdev, uos.VfsFat) |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
test <class 'VfsFat'> | ||
True True | ||
True |
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
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,7 @@ True True | |
True | ||
True | ||
True | ||
True | ||
mtime=False | ||
True | ||
True | ||
|