xattr.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import os
  2. import tempfile
  3. import unittest
  4. from attic.testsuite import AtticTestCase
  5. from attic.xattr import lsetxattr, llistxattr, lgetxattr, get_all, set, flistxattr, fgetxattr, fsetxattr, is_enabled
  6. @unittest.skipUnless(is_enabled(), 'xattr not enabled on filesystem')
  7. class XattrTestCase(AtticTestCase):
  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_low_level(self):
  15. self.assert_equal(llistxattr(self.tmpfile.name), [])
  16. self.assert_equal(llistxattr(self.symlink), [])
  17. lsetxattr(self.tmpfile.name, b'foo', b'bar')
  18. self.assert_equal(llistxattr(self.tmpfile.name), [b'foo'])
  19. self.assert_equal(lgetxattr(self.tmpfile.name, b'foo'), b'bar')
  20. self.assert_equal(llistxattr(self.symlink), [])
  21. def test_low_level_fileno(self):
  22. self.assert_equal(flistxattr(self.tmpfile.fileno()), [])
  23. fsetxattr(self.tmpfile.fileno(), b'foo', b'bar')
  24. self.assert_equal(flistxattr(self.tmpfile.fileno()), [b'foo'])
  25. self.assert_equal(fgetxattr(self.tmpfile.fileno(), b'foo'), b'bar')
  26. def test_high_level(self):
  27. self.assert_equal(get_all(self.tmpfile.name), {})
  28. self.assert_equal(get_all(self.symlink), {})
  29. set(self.tmpfile.name, b'foo', b'bar')
  30. self.assert_equal(get_all(self.tmpfile.name), {b'foo': b'bar'})
  31. self.assert_equal(get_all(self.symlink), {})
  32. def test_high_level_fileno(self):
  33. self.assert_equal(get_all(self.tmpfile.fileno()), {})
  34. set(self.tmpfile.fileno(), b'foo', b'bar')
  35. self.assert_equal(get_all(self.tmpfile.fileno()), {b'foo': b'bar'})