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
|
import unittest, os, time
from commontest import *
from rdiff_backup import Globals, rpath, fs_abilities
class FSAbilitiesTest(unittest.TestCase):
"""Test testing of file system abilities
Some of these tests assume that the actual file system tested has
the given abilities. If the file system this is run on differs
from the original test system, this test may/should fail. Change
the expected values below.
"""
# Describes standard linux file system without acls/eas
dir_to_test = "testfiles"
eas = acls = 1
chars_to_quote = ""
extended_filenames = 1
case_sensitive = 1
ownership = (os.getuid() == 0)
hardlinks = fsync_dirs = 1
dir_inc_perms = 1
resource_forks = 0
carbonfile = 0
high_perms = 1
# Describes MS-Windows style file system
#dir_to_test = "/mnt/fat"
#eas = acls = 0
#extended_filenames = 0
#chars_to_quote = "^a-z0-9_ -"
#ownership = hardlinks = 0
#fsync_dirs = 1
#dir_inc_perms = 0
#resource_forks = 0
#carbonfile = 0
# A case insensitive directory (a cdrom mount on my system!)
case_insensitive_path = "/media/cdrecorder"
def testReadOnly(self):
"""Test basic querying read only"""
base_dir = rpath.RPath(Globals.local_connection, self.dir_to_test)
fsa = fs_abilities.FSAbilities('read-only').init_readonly(base_dir)
print fsa
assert fsa.read_only == 1, fsa.read_only
assert fsa.eas == self.eas, fsa.eas
assert fsa.acls == self.acls, fsa.acls
assert fsa.resource_forks == self.resource_forks, fsa.resource_forks
assert fsa.carbonfile == self.carbonfile, fsa.carbonfile
assert fsa.case_sensitive == self.case_sensitive, fsa.case_sensitive
def testReadWrite(self):
"""Test basic querying read/write"""
base_dir = rpath.RPath(Globals.local_connection, self.dir_to_test)
new_dir = base_dir.append("fs_abilitiestest")
if new_dir.lstat(): Myrm(new_dir.path)
new_dir.setdata()
new_dir.mkdir()
t = time.time()
fsa = fs_abilities.FSAbilities('read/write').init_readwrite(new_dir)
print "Time elapsed = ", time.time() - t
print fsa
assert fsa.read_only == 0, fsa.read_only
assert fsa.eas == self.eas, fsa.eas
assert fsa.acls == self.acls, fsa.acls
assert fsa.ownership == self.ownership, fsa.ownership
assert fsa.hardlinks == self.hardlinks, fsa.hardlinks
assert fsa.fsync_dirs == self.fsync_dirs, fsa.fsync_dirs
assert fsa.dir_inc_perms == self.dir_inc_perms, fsa.dir_inc_perms
assert fsa.resource_forks == self.resource_forks, fsa.resource_forks
assert fsa.carbonfile == self.carbonfile, fsa.carbonfile
assert fsa.high_perms == self.high_perms, fsa.high_perms
assert fsa.extended_filenames == self.extended_filenames
#ctq_rp = new_dir.append("chars_to_quote")
#assert ctq_rp.lstat()
#fp = ctq_rp.open('rb')
#chars_to_quote = fp.read()
#assert not fp.close()
#assert chars_to_quote == self.chars_to_quote, chars_to_quote
new_dir.delete()
def test_case_sensitive(self):
"""Test a read-only case-INsensitive directory"""
rp = rpath.RPath(Globals.local_connection, self.case_insensitive_path)
fsa = fs_abilities.FSAbilities('read-only')
fsa.set_case_sensitive_readonly(rp)
assert fsa.case_sensitive == 0, fsa.case_sensitive
if __name__ == "__main__": unittest.main()
|