xattr.py 1.6 KB

123456789101112131415161718192021222324252627282930313233
  1. import os
  2. import tempfile
  3. import unittest
  4. from attic.testsuite import BaseTestCase
  5. from attic.xattr import is_enabled, getxattr, setxattr, listxattr
  6. @unittest.skipUnless(is_enabled(), 'xattr not enabled on filesystem')
  7. class XattrTestCase(BaseTestCase):
  8. def setUp(self):
  9. self.tmpfile = tempfile.NamedTemporaryFile()
  10. self.symlink = os.path.join(os.path.dirname(self.tmpfile.name), 'symlink')
  11. os.symlink(self.tmpfile.name, self.symlink)
  12. def tearDown(self):
  13. os.unlink(self.symlink)
  14. def test(self):
  15. self.assert_equal(listxattr(self.tmpfile.name), [])
  16. self.assert_equal(listxattr(self.tmpfile.fileno()), [])
  17. self.assert_equal(listxattr(self.symlink), [])
  18. setxattr(self.tmpfile.name, 'user.foo', b'bar')
  19. setxattr(self.tmpfile.fileno(), 'user.bar', b'foo')
  20. setxattr(self.tmpfile.name, 'user.empty', None)
  21. self.assert_equal(set(listxattr(self.tmpfile.name)), set(['user.foo', 'user.bar', 'user.empty']))
  22. self.assert_equal(set(listxattr(self.tmpfile.fileno())), set(['user.foo', 'user.bar', 'user.empty']))
  23. self.assert_equal(set(listxattr(self.symlink)), set(['user.foo', 'user.bar', 'user.empty']))
  24. self.assert_equal(listxattr(self.symlink, follow_symlinks=False), [])
  25. self.assert_equal(getxattr(self.tmpfile.name, 'user.foo'), b'bar')
  26. self.assert_equal(getxattr(self.tmpfile.fileno(), 'user.foo'), b'bar')
  27. self.assert_equal(getxattr(self.symlink, 'user.foo'), b'bar')
  28. self.assert_equal(getxattr(self.tmpfile.name, 'user.empty'), None)