X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=test%2Ftests.py;h=38452e5c5a65d947d95e0445d3e1caeab0635aec;hb=bf2ad3a677c948b2bc975a56d444a4f901497894;hp=48a10f3349cee8f478c4990606a8e07ab46ee26c;hpb=16a79e753a964df8c87af9151731878f804bc85d;p=rrq%2Ffuse_xattrs.git diff --git a/test/tests.py b/test/tests.py index 48a10f3..38452e5 100755 --- a/test/tests.py +++ b/test/tests.py @@ -14,6 +14,9 @@ import xattr from pathlib import Path import os +if xattr.__version__ != '0.9.1': + print("WARNING, only tested with xattr version 0.9.1") + # TODO # - listxattr: list too long # - sidecar file permissions @@ -22,17 +25,30 @@ import os class TestXAttrs(unittest.TestCase): def setUp(self): - self.randomFile = "./mount/foo.txt" - self.randomFileSidecar = "./mount/foo.txt.xattr" + self.sourceDir = "./source/" + self.mountDir = "./mount/" + self.randomFilename = "foo.txt" + + self.randomFile = self.mountDir + self.randomFilename + self.randomFileSidecar = self.randomFile + ".xattr" + + self.randomSourceFile = self.sourceDir + self.randomFilename + self.randomSourceFileSidecar = self.randomSourceFile + ".xattr" + if os.path.isfile(self.randomFile): os.remove(self.randomFile) - Path(self.randomFile).touch() if os.path.isfile(self.randomFileSidecar): os.remove(self.randomFileSidecar) + Path(self.randomFile).touch() + self.assertTrue(os.path.isfile(self.randomFile)) + self.assertFalse(os.path.isfile(self.randomFileSidecar)) + def tearDown(self): - os.remove(self.randomFile) + if os.path.isfile(self.randomFile): + os.remove(self.randomFile) + if os.path.isfile(self.randomFileSidecar): os.remove(self.randomFileSidecar) @@ -148,9 +164,9 @@ class TestXAttrs(unittest.TestCase): def test_xattr_list(self): enc = "utf-8" - key1 = b"user.foo" - key2 = b"user.foo2" - key3 = b"user.foo3" + key1 = "user.foo" + key2 = "user.foo2" + key3 = "user.foo3" value = "bar" # set 3 keys @@ -177,7 +193,7 @@ class TestXAttrs(unittest.TestCase): # list attrs = xattr.listxattr(self.randomFile) self.assertEqual(len(attrs), 1) - self.assertTrue(key.encode() in attrs) + self.assertEqual(attrs[0], key) # read read_value = xattr.getxattr(self.randomFile, key) @@ -213,6 +229,51 @@ class TestXAttrs(unittest.TestCase): self.assertEqual(ex.exception.errno, 61) self.assertEqual(ex.exception.strerror, "No data available") + def test_hide_sidecar(self): + xattr.setxattr(self.randomFile, "user.foo", bytes("bar", "utf-8")) + self.assertTrue(os.path.isfile(self.randomFile)) + self.assertFalse(os.path.isfile(self.randomFileSidecar)) + + sidecarFilename = self.randomFilename + ".xattr" + files_mount = os.listdir(self.mountDir) + self.assertTrue(self.randomFilename in files_mount) + self.assertTrue(sidecarFilename not in files_mount) + + files_source = os.listdir(self.sourceDir) + self.assertTrue(self.randomFilename in files_source) + self.assertTrue(sidecarFilename in files_source) + + def test_create_new_file(self): + test_filename = "test_create_new_file" + self.assertFalse(os.path.isfile(self.sourceDir + test_filename)) + self.assertFalse(os.path.isfile(self.mountDir + test_filename)) + + open(self.mountDir + test_filename, "a").close() + self.assertTrue(os.path.isfile(self.sourceDir + test_filename)) + self.assertTrue(os.path.isfile(self.mountDir + test_filename)) + # FIXME: if one assert fails, the file isn't going to be deleted + os.remove(self.mountDir + test_filename) + + def test_remove_file_with_sidecar(self): + xattr.setxattr(self.randomFile, "user.foo", bytes("bar", "utf-8")) + self.assertTrue(os.path.isfile(self.randomFile)) + self.assertTrue(os.path.isfile(self.randomSourceFile)) + self.assertTrue(os.path.isfile(self.randomSourceFileSidecar)) + + os.remove(self.randomFile) + self.assertFalse(os.path.isfile(self.randomFile)) + self.assertFalse(os.path.isfile(self.randomSourceFile)) + self.assertFalse(os.path.isfile(self.randomSourceFileSidecar)) + + def test_remove_file_without_sidecar(self): + self.assertTrue(os.path.isfile(self.randomFile)) + self.assertTrue(os.path.isfile(self.randomSourceFile)) + self.assertFalse(os.path.isfile(self.randomSourceFileSidecar)) + + os.remove(self.randomFile) + self.assertFalse(os.path.isfile(self.randomFile)) + self.assertFalse(os.path.isfile(self.randomSourceFile)) + self.assertFalse(os.path.isfile(self.randomSourceFileSidecar)) if __name__ == '__main__': unittest.main()