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
25 import libxyz.core as core
26 import libxyz.pselector
27
28 from nose.tools import raises
29 from libxyz.exceptions import *
30 from libxyz.vfs import VFSDispatcher
31 from libxyz.vfs.local import LocalVFSObject
32 from libxyz import const
33
34
35 xyz = None
36 files = {}
47
51 fd_good, path_good = tempfile.mkstemp(text=True)
52 fd_bad, path_bad = tempfile.mkstemp(text=True)
53 _, test_name = tempfile.mkstemp(text=True)
54 _, test_size = tempfile.mkstemp(text=True)
55 _, test_owner = tempfile.mkstemp(text=True)
56
57 os.write(fd_good, """action(r'iname{".*\.pdf$"}', lambda obj: obj)""")
58 os.write(fd_bad, ":(")
59
60 files["actions_good"] = path_good
61 files["actions_bad"] = path_bad
62 files["test_name"] = test_name
63 files["test_size"] = test_size
64 files["test_owner"] = test_owner
65
73
77 """
78 libxyz.core.Queue tests
79 """
80
83
84
85
86 @raises(XYZValueError)
89
90
91
92 @raises(IndexError)
95
96
97
99 assert self.q.tail() is None
100
101
102
104 self.q.push("abc")
105 assert self.q.tail() == "abc"
106
107
108
110 size = 5
111
112 q = core.Queue(size)
113
114 for i in range(size):
115 q.push(i)
116
117 _res = []
118
119 for i in range(size):
120 _res.append(q.pop())
121
122 assert _res == list(range(size))
123
127 """
128 libxyz.core.ActionManager tests
129 """
130
142
143
144
147
148
149
150 @raises(XYZRuntimeError)
152 self.am.register("WRONG", lambda: None)
153
154
155
157 assert self.am.register("size{100}", lambda: None) is None
158
159
160
162 vfs_size = self.xyz.vfs.dispatch(self.files["test_size"])
163 vfs_size.size = 100
164 vfs_name = self.xyz.vfs.dispatch(self.files["test_name"])
165 vfs_owner = self.xyz.vfs.dispatch(self.files["test_owner"])
166 vfs_owner.uid = 500
167 vfs_owner.gid = 501
168
169 self.am.register("size{100}", lambda: "size")
170 self.am.register("name{'''%s'''}" % vfs_name.name, lambda: "name")
171 self.am.register("owner{500:501}", lambda: "owner")
172
173 assert self.am.match(vfs_size)() == "size"
174 assert self.am.match(vfs_name)() == "name"
175 assert self.am.match(vfs_owner)() == "owner"
176
198
199
200
203
204
205
207
208 self.dsl.let("var1", "val1")
209
210 self.dsl.let("var2", "val2", sect="test")
211
212 self.dsl.let("dictvar", {1: 2, 3: 4})
213 self.dsl.let("dictvar", {3: 33, 5: 6})
214
215
216
217 @raises(DSLError)
221
222
223
225 self.setupValues()
226
227 assert self.xyz.conf["local"]["var1"] == "val1"
228 assert self.xyz.conf["test"]["var2"] == "val2"
229 assert self.xyz.conf["local"]["dictvar"] == {1: 2, 3: 33, 5: 6}
230
231 assert self.dsl.val("var1") == "val1"
232 assert self.dsl.val("var2", "test") == "val2"
233 assert self.dsl.val("dictvar") == {1: 2, 3: 33, 5: 6}
234
235
236
238 data = {
239 "a1": "z1",
240 "a2": "z2",
241 "a3": [1,2,3]
242 }
243
244 for k, v in data.iteritems():
245 self.dsl.let(k, v, "section-test")
246
247 assert self.dsl.section("section-test") == data
248
249
250
257
258
259
261 self.dsl.load(":core:shell:execute")
262
263
264
266 method = lambda x: x
267 sc = self.dsl.kbd("Ctrl", "a")
268
269 self.dsl.bind(method, sc)
270 self.dsl.bind(method, sc, "XYZ")
271
272 assert self.xyz.km.get_binds()["DEFAULT"][sc] == method
273 assert self.xyz.km.get_binds()["XYZ"][sc] == method
274
275
276
283