|
|
|
@ -14,90 +14,90 @@ class TestTrezorIoFatfs(unittest.TestCase):
|
|
|
|
|
sdcard.power_off()
|
|
|
|
|
|
|
|
|
|
def _filename(self, suffix=""):
|
|
|
|
|
return "FILE%s.TXT" % suffix
|
|
|
|
|
return f"FILE{suffix}.TXT"
|
|
|
|
|
|
|
|
|
|
def _dirname(self, suffix=""):
|
|
|
|
|
return "TREZOR%s" % suffix
|
|
|
|
|
return f"TREZOR{suffix}"
|
|
|
|
|
|
|
|
|
|
def test_basic(self):
|
|
|
|
|
# test just the stuff in setup and teardown
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def test_mkdir(self):
|
|
|
|
|
fatfs.mkdir("/%s" % self._dirname())
|
|
|
|
|
s = fatfs.stat("/%s" % self._dirname())
|
|
|
|
|
fatfs.mkdir(f"/{self._dirname()}")
|
|
|
|
|
s = fatfs.stat(f"/{self._dirname()}")
|
|
|
|
|
self.assertEqual(s, (0, "---d-", self._dirname()))
|
|
|
|
|
|
|
|
|
|
def test_listdir(self):
|
|
|
|
|
fatfs.mkdir("/%s" % self._dirname())
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w") as f:
|
|
|
|
|
fatfs.mkdir(f"/{self._dirname()}")
|
|
|
|
|
with fatfs.open(f"{self._filename()}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"test"))
|
|
|
|
|
with fatfs.open("/%s/%s" % (self._dirname(), self._filename("2")), "w") as f:
|
|
|
|
|
with fatfs.open(f"/{self._dirname()}/{self._filename('2')}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"testtest"))
|
|
|
|
|
l = [e for e in fatfs.listdir("/")]
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
l, [(0, "---d-", self._dirname()), (4, "----a", self._filename())]
|
|
|
|
|
)
|
|
|
|
|
l = [e for e in fatfs.listdir("/%s" % self._dirname())]
|
|
|
|
|
l = [e for e in fatfs.listdir(f"/{self._dirname()}")]
|
|
|
|
|
self.assertEqual(l, [(8, "----a", self._filename("2"))])
|
|
|
|
|
|
|
|
|
|
def test_unlink(self):
|
|
|
|
|
fatfs.mkdir("/%s" % self._dirname())
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w") as f:
|
|
|
|
|
fatfs.mkdir(f"/{self._dirname()}")
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"test"))
|
|
|
|
|
s = fatfs.stat("/%s" % self._dirname())
|
|
|
|
|
s = fatfs.stat(f"/{self._dirname()}")
|
|
|
|
|
self.assertEqual(s, (0, "---d-", self._dirname()))
|
|
|
|
|
s = fatfs.stat("/%s" % self._filename())
|
|
|
|
|
s = fatfs.stat(f"/{self._filename()}")
|
|
|
|
|
self.assertEqual(s, (4, "----a", self._filename()))
|
|
|
|
|
fatfs.unlink("/%s" % self._dirname())
|
|
|
|
|
fatfs.unlink("/%s" % self._filename())
|
|
|
|
|
fatfs.unlink(f"/{self._dirname()}")
|
|
|
|
|
fatfs.unlink(f"/{self._filename()}")
|
|
|
|
|
with self.assertRaises(fatfs.FatFSError):
|
|
|
|
|
fatfs.stat("/%s" % self._dirname())
|
|
|
|
|
fatfs.stat(f"/{self._dirname()}")
|
|
|
|
|
with self.assertRaises(fatfs.FatFSError):
|
|
|
|
|
self.assertRaises(fatfs.stat("/%s" % self._filename()))
|
|
|
|
|
self.assertRaises(fatfs.stat(f"/{self._filename()}"))
|
|
|
|
|
|
|
|
|
|
def test_rename(self):
|
|
|
|
|
fatfs.mkdir("/%s" % self._dirname())
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w") as f:
|
|
|
|
|
fatfs.mkdir(f"/{self._dirname()}")
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"test"))
|
|
|
|
|
s = fatfs.stat("/%s" % self._dirname())
|
|
|
|
|
s = fatfs.stat(f"/{self._dirname()}")
|
|
|
|
|
self.assertEqual(s, (0, "---d-", self._dirname()))
|
|
|
|
|
s = fatfs.stat("/%s" % self._filename())
|
|
|
|
|
s = fatfs.stat(f"/{self._filename()}")
|
|
|
|
|
self.assertEqual(s, (4, "----a", self._filename()))
|
|
|
|
|
fatfs.rename("/%s" % self._dirname(), "/%s" % self._dirname("2"))
|
|
|
|
|
fatfs.rename("/%s" % self._filename(), "/%s" % self._filename("2"))
|
|
|
|
|
fatfs.rename(f"/{self._dirname()}", f"/{self._dirname('2')}")
|
|
|
|
|
fatfs.rename(f"/{self._filename()}", f"/{self._filename('2')}")
|
|
|
|
|
with self.assertRaises(fatfs.FatFSError):
|
|
|
|
|
fatfs.stat("/%s" % self._dirname())
|
|
|
|
|
fatfs.stat(f"/{self._dirname()}")
|
|
|
|
|
with self.assertRaises(fatfs.FatFSError):
|
|
|
|
|
self.assertRaises(fatfs.stat("/%s" % self._filename()))
|
|
|
|
|
s = fatfs.stat("/%s" % self._dirname("2"))
|
|
|
|
|
self.assertRaises(fatfs.stat(f"/{self._filename()}"))
|
|
|
|
|
s = fatfs.stat(f"/{self._dirname('2')}")
|
|
|
|
|
self.assertEqual(s, (0, "---d-", self._dirname("2")))
|
|
|
|
|
s = fatfs.stat("/%s" % self._filename("2"))
|
|
|
|
|
s = fatfs.stat(f"/{self._filename('2')}")
|
|
|
|
|
self.assertEqual(s, (4, "----a", self._filename("2")))
|
|
|
|
|
|
|
|
|
|
def test_open_rw(self):
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"test"))
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "r") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "r") as f:
|
|
|
|
|
b = bytearray(100)
|
|
|
|
|
r = f.read(b)
|
|
|
|
|
self.assertEqual(r, 4)
|
|
|
|
|
self.assertEqual(bytes(b[:4]), b"test")
|
|
|
|
|
|
|
|
|
|
def test_open_a(self):
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"test" * 200))
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "a") as f:
|
|
|
|
|
with fatfs.open(f"{self._filename()}", "a") as f:
|
|
|
|
|
f.seek(800)
|
|
|
|
|
f.write(bytearray(b"TEST" * 200))
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "r") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "r") as f:
|
|
|
|
|
b = bytearray(2000)
|
|
|
|
|
r = f.read(b)
|
|
|
|
|
self.assertEqual(r, 1600)
|
|
|
|
|
self.assertEqual(bytes(b[:1600]), b"test" * 200 + b"TEST" * 200)
|
|
|
|
|
|
|
|
|
|
def test_seek(self):
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w+") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "w+") as f:
|
|
|
|
|
f.write(bytearray(b"test" * 10))
|
|
|
|
|
f.seek(2)
|
|
|
|
|
b = bytearray(8)
|
|
|
|
@ -106,23 +106,23 @@ class TestTrezorIoFatfs(unittest.TestCase):
|
|
|
|
|
self.assertEqual(bytes(b[:8]), b"sttestte")
|
|
|
|
|
|
|
|
|
|
def test_truncate(self):
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "w") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "w") as f:
|
|
|
|
|
f.write(bytearray(b"test" * 100))
|
|
|
|
|
s = fatfs.stat("/%s" % self._filename())
|
|
|
|
|
s = fatfs.stat(f"/{self._filename()}")
|
|
|
|
|
self.assertEqual(s, (400, "----a", self._filename()))
|
|
|
|
|
with fatfs.open("/%s" % self._filename(), "a") as f:
|
|
|
|
|
with fatfs.open(f"/{self._filename()}", "a") as f:
|
|
|
|
|
f.seek(111)
|
|
|
|
|
f.truncate()
|
|
|
|
|
s = fatfs.stat("/%s" % self._filename())
|
|
|
|
|
s = fatfs.stat(f"/{self._filename()}")
|
|
|
|
|
self.assertEqual(s, (111, "----a", self._filename()))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestTrezorIoFatfsLfn(TestTrezorIoFatfs):
|
|
|
|
|
def _filename(self, suffix=""):
|
|
|
|
|
return "reallylongfilename%s.textfile" % suffix
|
|
|
|
|
return f"reallylongfilename{suffix}.textfile"
|
|
|
|
|
|
|
|
|
|
def _dirname(self, suffix=""):
|
|
|
|
|
return "reallylongdirname%s" % suffix
|
|
|
|
|
return f"reallylongdirname{suffix}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestTrezorIoFatfsMounting(unittest.TestCase):
|
|
|
|
|