platform.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import os
  2. import shutil
  3. import tempfile
  4. import unittest
  5. from attic.platform import acl_get, acl_set
  6. from attic.testsuite import AtticTestCase
  7. ACCESS_ACL = """
  8. user::rw-
  9. user:root:rw-:0
  10. user:9999:r--:9999
  11. group::r--
  12. group:root:r--:0
  13. group:9999:r--:9999
  14. mask::rw-
  15. other::r--
  16. """.strip().encode('ascii')
  17. DEFAULT_ACL = """
  18. user::rw-
  19. user:root:r--:0
  20. user:8888:r--:8888
  21. group::r--
  22. group:root:r--:0
  23. group:8888:r--:8888
  24. mask::rw-
  25. other::r--
  26. """.strip().encode('ascii')
  27. def fakeroot_detected():
  28. return 'FAKEROOTKEY' in os.environ
  29. @unittest.skipIf(fakeroot_detected(), 'not compatible with fakeroot')
  30. class PlatformLinuxTestCase(AtticTestCase):
  31. def setUp(self):
  32. self.tmpdir = tempfile.mkdtemp()
  33. def tearDown(self):
  34. shutil.rmtree(self.tmpdir)
  35. def get_acl(self, path):
  36. item = {}
  37. acl_get(path, item)
  38. return item
  39. def set_acl(self, path, access=None, default=None):
  40. item = {b'acl_access': access, b'acl_default': default}
  41. acl_set(path, item)
  42. def test_access_acl(self):
  43. file = tempfile.NamedTemporaryFile()
  44. self.assert_equal(self.get_acl(file.name), {})
  45. self.set_acl(file.name, access=ACCESS_ACL)
  46. self.assert_equal(self.get_acl(file.name)[b'acl_access'], ACCESS_ACL)
  47. def test_default_acl(self):
  48. self.assert_equal(self.get_acl(self.tmpdir), {})
  49. self.set_acl(self.tmpdir, access=ACCESS_ACL, default=DEFAULT_ACL)
  50. self.assert_equal(self.get_acl(self.tmpdir)[b'acl_access'], ACCESS_ACL)
  51. self.assert_equal(self.get_acl(self.tmpdir)[b'acl_default'], DEFAULT_ACL)