def create_test_files(self):
     """Create a minimal test case including all supported file types
     """
     # File
     self.create_regular_file('empty', size=0)
     # 2600-01-01 > 2**64 ns
     os.utime('input/empty', (19880895600, 19880895600))
     self.create_regular_file('file1', size=1024 * 80)
     self.create_regular_file('flagfile', size=1024)
     # Directory
     self.create_regular_file('dir2/file2', size=1024 * 80)
     # File owner
     os.chown('input/file1', 100, 200)
     # File mode
     os.chmod('input/file1', 0o7755)
     os.chmod('input/dir2', 0o555)
     # Block device
     os.mknod('input/bdev', 0o600 | stat.S_IFBLK,  os.makedev(10, 20))
     # Char device
     os.mknod('input/cdev', 0o600 | stat.S_IFCHR,  os.makedev(30, 40))
     # Hard link
     os.link(os.path.join(self.input_path, 'file1'),
             os.path.join(self.input_path, 'hardlink'))
     # Symlink
     os.symlink('somewhere', os.path.join(self.input_path, 'link1'))
     if xattr.is_enabled():
         xattr.setxattr(os.path.join(self.input_path, 'file1'), 'user.foo', b'bar')
         xattr.setxattr(os.path.join(self.input_path, 'link1'), 'user.foo_symlink', b'bar_symlink', follow_symlinks=False)
     # FIFO node
     os.mkfifo(os.path.join(self.input_path, 'fifo1'))
     if has_lchflags:
         os.lchflags(os.path.join(self.input_path, 'flagfile'), stat.UF_NODUMP)
Example #2
0
 def create_test_files(self):
     """Create a minimal test case including all supported file types
     """
     # File
     self.create_regual_file('empty', size=0)
     self.create_regual_file('file1', size=1024 * 80)
     # Directory
     self.create_regual_file('dir2/file2', size=1024 * 80)
     # File owner
     os.chown('input/file1', 100, 200)
     # File mode
     os.chmod('input/file1', 0o7755)
     os.chmod('input/dir2', 0o555)
     # Block device
     os.mknod('input/bdev', 0o600 | stat.S_IFBLK,  os.makedev(10, 20))
     # Char device
     os.mknod('input/cdev', 0o600 | stat.S_IFCHR,  os.makedev(30, 40))
     if xattr.is_enabled():
         xattr.setxattr(os.path.join(self.input_path, 'file1'), 'user.foo', b'bar')
     # Hard link
     os.link(os.path.join(self.input_path, 'file1'),
             os.path.join(self.input_path, 'hardlink'))
     # Symlink
     os.symlink('somewhere', os.path.join(self.input_path, 'link1'))
     # FIFO node
     os.mkfifo(os.path.join(self.input_path, 'fifo1'))
Example #3
0
 def create_test_files(self):
     """Create a minimal test case including all supported file types
     """
     # File
     self.create_regular_file('empty', size=0)
     # next code line raises OverflowError on 32bit cpu (raspberry pi 2):
     # 2600-01-01 > 2**64 ns
     #os.utime('input/empty', (19880895600, 19880895600))
     # thus, we better test with something not that far in future:
     # 2038-01-19 (1970 + 2^31 - 1 seconds) is the 32bit "deadline":
     os.utime('input/empty', (2**31 - 1, 2**31 - 1))
     self.create_regular_file('file1', size=1024 * 80)
     self.create_regular_file('flagfile', size=1024)
     # Directory
     self.create_regular_file('dir2/file2', size=1024 * 80)
     # File owner
     os.chown('input/file1', 100, 200)
     # File mode
     os.chmod('input/file1', 0o7755)
     os.chmod('input/dir2', 0o555)
     # Block device
     os.mknod('input/bdev', 0o600 | stat.S_IFBLK,  os.makedev(10, 20))
     # Char device
     os.mknod('input/cdev', 0o600 | stat.S_IFCHR,  os.makedev(30, 40))
     # Hard link
     os.link(os.path.join(self.input_path, 'file1'),
             os.path.join(self.input_path, 'hardlink'))
     # Symlink
     os.symlink('somewhere', os.path.join(self.input_path, 'link1'))
     if xattr.is_enabled(self.input_path):
         xattr.setxattr(os.path.join(self.input_path, 'file1'), 'user.foo', b'bar')
         # XXX this always fails for me
         # ubuntu 14.04, on a TMP dir filesystem with user_xattr, using fakeroot
         # same for newer ubuntu and centos.
         # if this is supported just on specific platform, platform should be checked first,
         # so that the test setup for all tests using it does not fail here always for others.
         #xattr.setxattr(os.path.join(self.input_path, 'link1'), 'user.foo_symlink', b'bar_symlink', follow_symlinks=False)
     # FIFO node
     os.mkfifo(os.path.join(self.input_path, 'fifo1'))
     if has_lchflags:
         os.lchflags(os.path.join(self.input_path, 'flagfile'), stat.UF_NODUMP)
Example #4
0
File: xattr.py Project: aykit/borg
import os
import tempfile
import unittest
from attic.testsuite import BaseTestCase
from attic.xattr import is_enabled, getxattr, setxattr, listxattr


@unittest.skipUnless(is_enabled(), 'xattr not enabled on filesystem')
class XattrTestCase(BaseTestCase):

    def setUp(self):
        self.tmpfile = tempfile.NamedTemporaryFile()
        self.symlink = os.path.join(os.path.dirname(self.tmpfile.name), 'symlink')
        os.symlink(self.tmpfile.name, self.symlink)

    def tearDown(self):
        os.unlink(self.symlink)

    def test(self):
        self.assert_equal(listxattr(self.tmpfile.name), [])
        self.assert_equal(listxattr(self.tmpfile.fileno()), [])
        self.assert_equal(listxattr(self.symlink), [])
        setxattr(self.tmpfile.name, 'user.foo', b'bar')
        setxattr(self.tmpfile.fileno(), 'user.bar', b'foo')
        setxattr(self.tmpfile.name, 'user.empty', None)
        self.assert_equal(set(listxattr(self.tmpfile.name)), set(['user.foo', 'user.bar', 'user.empty']))
        self.assert_equal(set(listxattr(self.tmpfile.fileno())), set(['user.foo', 'user.bar', 'user.empty']))
        self.assert_equal(set(listxattr(self.symlink)), set(['user.foo', 'user.bar', 'user.empty']))
        self.assert_equal(listxattr(self.symlink, follow_symlinks=False), [])
        self.assert_equal(getxattr(self.tmpfile.name, 'user.foo'), b'bar')
        self.assert_equal(getxattr(self.tmpfile.fileno(), 'user.foo'), b'bar')