1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import __builtin__
20 import locale
21 import tempfile
22 import os
23
24 import libxyz.core as core
25
26
27 from nose.tools import raises
28 from libxyz.exceptions import *
29 from libxyz.vfs.vfsobj import VFSFile
30
31
32 xyz = None
33 files = {}
36 global xyz, filesw
37
38 xyz = core.XYZData()
39 __builtin__._ = lambda x: x
40 __builtin__.xyzenc = locale.getpreferredencoding()
41
42
43 files["actions_good"], files["actions_bad"] = setup_actions()
44
47 fd_good, path_good = tempfile.mkstemp(text=True)
48 fd_bad, path_bad = tempfile.mkstemp(text=True)
49 os.write(fd_good, """action(r'iname{".*\.pdf$"}', lambda obj: obj)""")
50 os.write(fd_bad, ":(")
51
52 return path_good, path_bad
53
61
65 """
66 libxyz.core.Queue tests
67 """
68
71
72
73
74 @raises(XYZValueError)
77
78
79
80 @raises(IndexError)
83
84
85
87 assert self.q.tail() is None
88
89
90
92 self.q.push("abc")
93 assert self.q.tail() == "abc"
94
95
96
98 size = 5
99
100 q = core.Queue(size)
101
102 for i in range(size):
103 q.push(i)
104
105 _res = []
106
107 for i in range(size):
108 _res.append(q.pop())
109
110 assert _res == list(range(size))
111
115 """
116 libxyz.core.ActionManager tests
117 """
118
122
123
124
125 @raises(XYZRuntimeError)
127 self.am.register("WRONG", lambda: None)
128
129
130
132 assert self.am.register("size{100}", lambda: None) is None
133
134
135
136 @raises(XYZRuntimeError)
145
146
147
156
157
158
160 vfs_size = VFSFile("/tmp/test_size")
161 vfs_size.size = 100
162 vfs_name = VFSFile("/tmp/test_name")
163 vfs_owner = VFSFile("/tmp/test_owner")
164 vfs_owner.uid = 500
165 vfs_owner.gid = 501
166
167 self.am.register("size{100}", lambda: "size")
168 self.am.register("name{test_name}", lambda: "name")
169 self.am.register("owner{500:501}", lambda: "owner")
170
171 assert self.am.match(vfs_size)() == "size"
172 assert self.am.match(vfs_name)() == "name"
173 assert self.am.match(vfs_owner)() == "owner"
174
175
176