X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=test%2Ftests.py;h=51e7b1e6a7295160ee05dc4945178ac4202697a0;hb=2d95c9ab430c4f193958d271115a9f0a78c9e1ef;hp=eb425402f4fd9a3302b706f3f4136b52424cb680;hpb=331444d9b96dd06f79b8b9afde64c4efb440c194;p=rrq%2Ffuse_xattrs.git diff --git a/test/tests.py b/test/tests.py index eb42540..51e7b1e 100755 --- a/test/tests.py +++ b/test/tests.py @@ -22,17 +22,32 @@ import os class TestXAttrs(unittest.TestCase): def setUp(self): - self.randomFile = "./mount/tmp/foo.txt" - self.randomFileSidecar = "./mount/tmp/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) def test_xattr_set(self): xattr.setxattr(self.randomFile, "user.foo", bytes("bar", "utf-8")) @@ -146,9 +161,9 @@ class TestXAttrs(unittest.TestCase): def test_xattr_list(self): enc = "utf-8" - key1 = "user.foo" - key2 = "user.foo2" - key3 = "user.foo3" + key1 = b"user.foo" + key2 = b"user.foo2" + key3 = b"user.foo3" value = "bar" # set 3 keys @@ -175,7 +190,7 @@ class TestXAttrs(unittest.TestCase): # list attrs = xattr.listxattr(self.randomFile) self.assertEqual(len(attrs), 1) - self.assertTrue(key in attrs) + self.assertTrue(key.encode() in attrs) # read read_value = xattr.getxattr(self.randomFile, key) @@ -211,6 +226,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()