1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
import unittest
from commontest import BackupRestoreSeries
from rdiff_backup import rpath, metadata, Globals
"""***NOTE***
None of these tests should work unless your system supports resource
forks. So basically these tests should only be run on Mac OS X.
"""
Globals.read_resource_forks = Globals.write_resource_forks = 1
class ResourceForkTest(unittest.TestCase):
"""Test dealing with Mac OS X style resource forks"""
tempdir = rpath.RPath(Globals.local_connection, 'testfiles/output')
rf_testdir1 = rpath.RPath(Globals.local_connection,
'testfiles/resource_fork_test1')
rf_testdir2 = rpath.RPath(Globals.local_connection,
'testfiles/resource_fork_test2')
def make_temp(self):
"""Make temp directory testfiles/resource_fork_test"""
if self.tempdir.lstat():
self.tempdir.delete()
self.tempdir.mkdir()
def testBasic(self):
"""Test basic reading and writing of resource forks"""
self.make_temp()
rp = self.tempdir.append('test')
rp.touch()
self.assertEqual(rp.get_resource_fork(), '')
s = 'new resource fork data'
rp.write_resource_fork(s)
self.assertEqual(rp.get_resource_fork(), s)
rp2 = self.tempdir.append('test')
self.assertTrue(rp2.isreg())
self.assertEqual(rp2.get_resource_fork(), s)
def testRecord(self):
"""Test reading, writing, and comparing of records with rforks"""
self.make_temp()
rp = self.tempdir.append('test')
rp.touch()
rp.set_resource_fork('hello')
record = metadata.RORP2Record(rp)
rorp_out = metadata.Record2RORP(record)
self.assertEqual(rorp_out, rp)
self.assertEqual(rorp_out.get_resource_fork(), 'hello')
def make_backup_dirs(self):
"""Create testfiles/resource_fork_test[12] dirs for testing"""
if self.rf_testdir1.lstat():
self.rf_testdir1.delete()
if self.rf_testdir2.lstat():
self.rf_testdir2.delete()
self.rf_testdir1.mkdir()
rp1_1 = self.rf_testdir1.append('1')
rp1_2 = self.rf_testdir1.append('2')
rp1_3 = self.rf_testdir1.append('3')
rp1_1.touch()
rp1_2.touch()
rp1_3.symlink('foo')
rp1_1.write_resource_fork('This should appear in resource fork')
rp1_1.chmod(0o400) # test for bug changing resource forks after perms
rp1_2.write_resource_fork('Data for the resource fork 2')
self.rf_testdir2.mkdir()
rp2_1 = self.rf_testdir2.append('1')
rp2_2 = self.rf_testdir2.append('2')
rp2_3 = self.rf_testdir2.append('3')
rp2_1.touch()
rp2_2.touch()
rp2_3.touch()
rp2_1.write_resource_fork('New data for resource fork 1')
rp2_1.chmod(0o400)
rp2_3.write_resource_fork('New fork')
def testSeriesLocal(self):
"""Test backing up and restoring directories with ACLs locally"""
Globals.read_resource_forks = Globals.write_resource_forks = 1
self.make_backup_dirs()
dirlist = [
'testfiles/resource_fork_test1', 'testfiles/empty',
'testfiles/resource_fork_test2', 'testfiles/resource_fork_test1'
]
# BackupRestoreSeries(1, 1, dirlist, compare_resource_forks = 1)
BackupRestoreSeries(1, 1, dirlist)
def testSeriesRemote(self):
"""Test backing up and restoring directories with ACLs locally"""
Globals.read_resource_forks = Globals.write_resource_forks = 1
self.make_backup_dirs()
dirlist = [
'testfiles/resource_fork_test1', 'testfiles/resource_fork_test2',
'testfiles/empty', 'testfiles/resource_fork_test1'
]
# BackupRestoreSeries(1, 1, dirlist, compare_resource_forks = 1)
BackupRestoreSeries(1, 1, dirlist)
if __name__ == "__main__":
unittest.main()
|