summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/resourceforktest.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/testing/resourceforktest.py')
-rw-r--r--rdiff-backup/testing/resourceforktest.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/rdiff-backup/testing/resourceforktest.py b/rdiff-backup/testing/resourceforktest.py
new file mode 100644
index 0000000..4617b28
--- /dev/null
+++ b/rdiff-backup/testing/resourceforktest.py
@@ -0,0 +1,104 @@
+import unittest
+from commontest import *
+from rdiff_backup import rpath
+from rdiff_backup import metadata
+
+"""***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()
+ assert rp.get_resource_fork() == '', rp.get_resource_fork()
+
+ s = 'new resource fork data'
+ rp.write_resource_fork(s)
+ assert rp.get_resource_fork() == s, rp.get_resource_fork()
+
+ rp2 = self.tempdir.append('test')
+ assert rp2.isreg()
+ assert rp2.get_resource_fork() == s, rp2.get_resource_fork()
+
+ 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)
+ #print record
+ rorp_out = metadata.Record2RORP(record)
+ assert rorp_out == rp, (rorp_out, rp)
+ assert 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(0400) # 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(0400)
+ 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()
+