bugfix: binary_storage: check before writing a key with an empty value. Added test.
[rrq/fuse_xattrs.git] / test / tests.py
index 51e7b1e6a7295160ee05dc4945178ac4202697a0..304676f2f17c0484a5bd630b4564e8303baba33a 100755 (executable)
@@ -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
@@ -117,6 +120,14 @@ class TestXAttrs(unittest.TestCase):
         read_value = xattr.getxattr(self.randomFile, key)
         self.assertEqual(value, read_value.decode(enc))
 
+    def test_xattr_set_empty(self):
+        enc = "utf-8"
+        key = "user.foo"
+        value = ""
+        xattr.setxattr(self.randomFile, key, bytes(value, enc))
+        read_value = xattr.getxattr(self.randomFile, key)
+        self.assertEqual(value, read_value.decode(enc))
+
     def test_xattr_set_override(self):
         enc = "utf-8"
         key = "user.foo"
@@ -161,9 +172,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
@@ -190,7 +201,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)