|
Package epyunit ::
Module selftest
|
|
1
2 """Selftest for the package 'epyunit'.
3
4 """
5 from __future__ import absolute_import
6
7 __author__ = 'Arno-Can Uestuensoez'
8 __license__ = "Artistic-License-2.0 + Forced-Fairplay-Constraints"
9 __copyright__ = "Copyright (C) 2010-2016 Arno-Can Uestuensoez @Ingenieurbuero Arno-Can Uestuensoez"
10 __version__ = '0.2.0'
11 __uuid__='9de52399-7752-4633-9fdc-66c87a9200b8'
12
13 __docformat__ = "restructuredtext en"
14
15
16 import sys,os
17
18 from epyunit.SubprocUnit import SubprocessUnit,SProcUnitRules
19 from filesysobjects.FileSysObjects import findRelPathInSearchPath
20
21 _appname = "selftest"
22
24 """Calls the operational checks provided by 'myscript' for language variant.
25
26 Args:
27 slang: Programming language of called script, current supported are:
28
29 bash
30
31 python
32
33
34 **kargs:
35
36 out:
37
38 verbose:
39
40 debug:
41
42 Returns:
43 None.
44
45 Raises:
46 In case of assertion errors.
47
48 """
49 _out = kargs.get('out',None)
50 _verbose = kargs.get('verbose',0)
51 _debug = kargs.get('debug',0)
52
53 if _verbose>0:
54 kargs['verbose'] = _verbose
55 if kargs.get('debug') > 0:
56 kargs['debug'] = _debug
57
58
59 sx = SubprocessUnit()
60 import epyunit
61
62 if slang.lower() in ('bash', 'sh', 'shell',):
63 _sx = "myscript.sh"
64 cx = epyunit.__path__[0]+os.sep+_sx
65 if "win32" in sys.platform:
66 p = os.environ.get('PATH')
67 fp = findRelPathInSearchPath('bash.exe',p,subsplit=True)
68 if not fp:
69 fp = findRelPathInSearchPath('bash.exe',p,subsplit=True)
70 if not fp:
71 fp = findRelPathInSearchPath('bin/bash.exe',p,subsplit=True)
72 if not fp:
73 fp = findRelPathInSearchPath('bin\\bash.exe',p,subsplit=True)
74 if not fp:
75 fp = findRelPathInSearchPath('bash',p,subsplit=True)
76 if not fp:
77 raise Exception("Missing:bash")
78 cx = fp + ' ' + cx
79 else:
80 if not findRelPathInSearchPath('bash',os.environ.get('PATH'),subsplit=True):
81 raise Exception("Missing:bash")
82 cx = ' bash ' + cx
83
84 elif slang.lower() == 'python':
85 _sx = "myscript.py"
86 cx = epyunit.__path__[0]+os.sep+_sx
87 if "win32" in sys.platform:
88 p = os.environ.get('PATH')
89 fp = findRelPathInSearchPath('python.exe',p,subsplit=True)
90 if not fp:
91 fp = findRelPathInSearchPath('python.exe',p,subsplit=True)
92 if not fp:
93 fp = findRelPathInSearchPath('bin/python.exe',p,subsplit=True)
94 if not fp:
95 fp = findRelPathInSearchPath('bin\\python.exe',p,subsplit=True)
96 if not fp:
97 fp = findRelPathInSearchPath('python',p,subsplit=True)
98 if not fp:
99 raise Exception("Missing:python")
100 cx = fp + ' ' + cx
101 else:
102 if not findRelPathInSearchPath('python',os.environ['PATH'],subsplit=True):
103 raise Exception("\nPATH="+str(os.environ['PATH'])+"\nMissing:python")
104 cx = ' python ' + cx
105
106 elif slang.lower() == 'perl':
107 _sx = "myscript.pl"
108 cx = epyunit.__path__[0]+os.sep+_sx
109 if "win32" in sys.platform:
110 p = os.environ.get('PATH')
111 fp = findRelPathInSearchPath('perl.exe',p,subsplit=True)
112 if not fp:
113 fp = findRelPathInSearchPath('perl.exe',p,subsplit=True)
114 if not fp:
115 fp = findRelPathInSearchPath('bin/perl.exe',p,subsplit=True)
116 if not fp:
117 fp = findRelPathInSearchPath('bin\\perl.exe',p,subsplit=True)
118 if not fp:
119 fp = findRelPathInSearchPath('perl',p,subsplit=True)
120 if not fp:
121 raise Exception("Missing:perl")
122 cx = fp + ' ' + cx
123 else:
124 if not findRelPathInSearchPath('perl',os.environ['PATH'],subsplit=True):
125 raise Exception("Missing:perl")
126 cx = ' perl ' + cx
127
128 else:
129 raise Exception("Unknown language type:"+str(slang))
130
131
132 _myRules = SProcUnitRules()
133
134
135
136
137
138
139
140
141
142 _myParams = {'exitval':123,'stdoutok':["arbitrary output"],'stderrok':[],}
143 _myrx = {'reset':True, 'exitign': False, 'exitval': 123, 'exittype':'VAL',}
144 _myRules.setrules(**_myrx)
145 _myRules.setkargs(**_myParams)
146 if _verbose >1:
147 print _myRules
148 sx.setkargs(**{'rules':_myRules, 'env': os.environ})
149 ret = sx.callit(cx)
150 if ret[0] == 126:
151 print >>sys.stderr ,"check exec permissions of 'myscript.*'"
152 if _out:
153 if _verbose:
154 print "\n#*** epyunit/"+str(_sx)+" DEFAULT ***"
155 if _verbose>1:
156 sx.displayit(ret)
157
158 retX = [123,["arbitrary output"],[]]
159 try:
160 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
161 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
162 assert ret ==retX
163 except:
164 print >>sys.stderr, ""
165 print >>sys.stderr, "retX="+str(retX)
166 print >>sys.stderr, "ret= "+str(ret)
167 assert sx.apply(ret)
168
169
170
171
172
173 _myParams = {'exitval':0,'stdoutok':["fromA", "arbitrary output","arbitrary signalling OK string","arbitrary output"],'stderrok':[],}
174 _myrx = {'reset':True, 'exitign': False, 'exitval': 0, 'exittype':'OK', 'stdoutok_val':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
175 _myRules.setrules(**_myrx)
176 _myRules.setkargs(**_myParams)
177 if _verbose>1:
178 print _myRules
179 sx.setkargs(**{'rules':_myRules,})
180 ret = sx.callit(cx+' -- OK')
181 if _out:
182 if _verbose:
183 print "\n#*** epyunit/"+str(_sx)+" OK ***"
184 if _verbose>1:
185 sx.displayit(ret)
186 retX = [0,["fromA", "arbitrary output","arbitrary signalling OK string","arbitrary output"],[]]
187 try:
188 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
189 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
190 assert ret ==retX
191 except:
192 print >>sys.stderr, ""
193 print >>sys.stderr, "retX="+str(retX)
194 print >>sys.stderr, "ret= "+str(ret)
195 assert sx.apply(ret)
196
197
198
199
200
201
202 _myParams = {'exitval':0,'stdoutok':["fromC", "arbitrary output","arbitrary signalling OK string","arbitrary output"],'stderrok':[],}
203 _myrx = {'reset':True, 'exitign': False, 'exittype':'OK','stdoutok':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
204 _myRules.setrules(**_myrx)
205 _myRules.setkargs(**_myParams)
206 if _verbose>1:
207 print _myRules
208 sx.setkargs(**{'rules':_myRules,})
209 ret = sx.callit(cx+' -- PRIO')
210 if _out:
211 if _verbose:
212 print "\n#*** epyunit/"+str(_sx)+" PRIO ***"
213 if _verbose>1:
214 sx.displayit(ret)
215 retX = [0,["fromC", "arbitrary output","arbitrary signalling OK string","arbitrary output"],["arbitrary signalling ERROR string"]]
216 try:
217 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
218 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
219 assert ret ==retX
220 except:
221 print >>sys.stderr, ""
222 print >>sys.stderr, "retX="+str(retX)
223 print >>sys.stderr, "ret= "+str(ret)
224 assert sx.apply(ret)
225
226
227
228
229
230
231 _myParams = {'exitval':0,'stdoutok':["fromD", "arbitrary output","arbitrary signalling OK string","arbitrary output"],'stderrok':[],}
232 _myrx = {'reset':True, 'exitign': False, 'exittype':'OK','stdoutok':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
233 _myRules.setrules(**_myrx)
234 _myRules.setkargs(**_myParams)
235 if _verbose>1:
236 print _myRules
237 sx.setkargs(**{'rules':_myRules,})
238 ret = sx.callit(cx+' -- EXITOK')
239 if _out:
240 if _verbose:
241 print "\n#*** epyunit/"+str(_sx)+" EXITOK ***"
242 if _verbose>1:
243 sx.displayit(ret)
244 retX = [0,["fromD", "arbitrary output","arbitrary signalling OK string","arbitrary output"],[]]
245 try:
246 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
247 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
248 assert ret ==retX
249 except:
250 print >>sys.stderr, ""
251 print >>sys.stderr, "retX="+str(retX)
252 print >>sys.stderr, "ret= "+str(ret)
253 assert sx.apply(ret)
254
255
256
257
258
259
260 _myParams = {'exitval':1,'stdoutok':["fromE", "arbitrary output","arbitrary signalling OK string","arbitrary output"],'stderrok':[],}
261 _myrx = {'reset':True, 'multiline':True, 'exitign': False, 'exittype':'NOK','stdoutok':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
262 _myRules.setrules(**_myrx)
263 _myRules.setkargs(**_myParams)
264 if _verbose>1:
265 print _myRules
266 sx.setkargs(**{'rules':_myRules,})
267 ret = sx.callit(cx+' -- EXITNOK')
268 if _out:
269 if _verbose:
270 print "\n#*** epyunit/"+str(_sx)+" EXITNOK ***"
271 if _verbose>1:
272 sx.displayit(ret)
273 retX = [1,["fromE", "arbitrary output","arbitrary signalling OK string","arbitrary output"],[]]
274 try:
275 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
276 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
277 assert ret ==retX
278 except:
279 print >>sys.stderr, ""
280 print >>sys.stderr, "retX="+str(retX)
281 print >>sys.stderr, "ret= "+str(ret)
282 assert sx.apply(ret)
283
284
285
286
287
288
289 _myParams = {'exitval':7,'stdoutok':["fromF", "arbitrary output","arbitrary signalling NOK string","arbitrary output"],'stderrok':[],}
290 _myrx = {'reset':True, 'exitign': False, 'exittype':'VAL','exitval':7,'stdoutok':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
291 _myRules.setrules(**_myrx)
292 _myRules.setkargs(**_myParams)
293 if _verbose>1:
294 print _myRules
295 sx.setkargs(**{'rules':_myRules,})
296 ret = sx.callit(cx+' -- EXIT7')
297 if _out:
298 if _verbose:
299 print "\n#*** epyunit/"+str(_sx)+" EXIT7 ***"
300 if _verbose>1:
301 sx.displayit(ret)
302 retX = [7,["fromF", "arbitrary output","arbitrary signalling NOK string","arbitrary output"],[]]
303 try:
304 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
305 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
306 assert ret ==retX
307 except:
308 print >>sys.stderr, ""
309 print >>sys.stderr, "retX="+str(retX)
310 print >>sys.stderr, "ret= "+str(ret)
311 assert sx.apply(ret)
312
313
314
315
316
317
318 _myParams = {'exitval':8,'stdoutok':["fromG", 'arbitrary output', 'arbitrary signalling NOK string', 'arbitrary output'],'stderrok': ['arbitrary err output', 'arbitrary err signalling NOK string', 'arbitrary err output'],}
319 _myrx = {'reset':True, 'exitign': False, 'exittype':'VAL','exitval':8,'stdoutok':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
320 _myRules.setrules(**_myrx)
321 _myRules.setkargs(**_myParams)
322 if _verbose>1:
323 print _myRules
324 ret = sx.callit(cx+' -- EXIT8')
325 if _out:
326 if _verbose:
327 print "\n#*** epyunit/"+str(_sx)+" EXIT8 ***"
328 if _verbose>1:
329 sx.displayit(ret)
330 retX = [8,["fromG", 'arbitrary output', 'arbitrary signalling NOK string', 'arbitrary output'], ['arbitrary err output', 'arbitrary err signalling NOK string', 'arbitrary err output']]
331 try:
332 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
333 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
334 assert ret ==retX
335 except:
336 print >>sys.stderr, ""
337 print >>sys.stderr, "retX="+str(retX)
338 print >>sys.stderr, "ret= "+str(ret)
339 assert sx.apply(ret)
340
341
342
343
344
345 _myParams = {'exitval':9,'stdoutok':["fromH", 'OK', 'OK', 'OK'],'stderrok': ['NOK', 'NOK',],}
346 _myrx = {'reset':True, 'exitign': False, 'exittype':'VAL','exitval':9,'stdoutok':["NOK","NOK","NOK"]}
347 _myRules.setrules(**_myrx)
348 _myRules.setkargs(**_myParams)
349 if _verbose>1:
350 print _myRules
351 ret = sx.callit(cx+' -- EXIT9OK3NOK2')
352 if _out:
353 if _verbose:
354 print "\n#*** epyunit/"+str(_sx)+" EXIT9OK3NOK2 ***"
355 if _verbose>1:
356 sx.displayit(ret)
357 retX = [9,["fromH", 'OK', 'OK', 'OK'], ['NOK', 'NOK']]
358 try:
359 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
360 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
361 assert ret ==retX
362 except:
363 print >>sys.stderr, ""
364 print >>sys.stderr, "retX="+str(retX)
365 print >>sys.stderr, "ret= "+str(ret)
366 assert sx.apply(ret)
367
368
369
370
371
372 _myParams = {'exitval':0,'stdoutok':[],'stderrok': ['fromI', 'NOK', 'NOK'],}
373 _myrx = {'reset':True, 'exitign': False, 'exittype':'VAL','exitval':0,'stdoutok':[]}
374 _myRules.setrules(**_myrx)
375 _myRules.setkargs(**_myParams)
376 if _verbose>1:
377 print _myRules
378 ret = sx.callit(cx+' -- STDERRONLY')
379 if _out:
380 if _verbose:
381 print "\n#*** epyunit/"+str(_sx)+" STDERRONLY ***"
382 if _verbose>1:
383 sx.displayit(ret)
384 retX = [0,[], ['fromI', 'NOK', 'NOK']]
385 try:
386 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
387 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
388 assert ret ==retX
389 except:
390 print >>sys.stderr, ""
391 print >>sys.stderr, "retX="+str(retX)
392 print >>sys.stderr, "ret= "+str(ret)
393 assert sx.apply(ret)
394
395
396
397
398
399 _myParams = {'exitval':123,'stdoutok':["arbitrary output"],'stderrok': [],}
400 _myrx = {'reset':True, 'exitign': False, 'exittype':'NOK','stdoutok':["arbitrary output","arbitrary signalling OK string","arbitrary output"]}
401 _myRules.setrules(**_myrx)
402 _myRules.setkargs(**_myParams)
403 if _verbose>1:
404 print _myRules
405 ret = sx.callit(cx)
406 if _out:
407 if _verbose:
408 print "\n#*** epyunit/"+str(_sx)+" DEFAULT ***"
409 if _verbose>1:
410 sx.displayit(ret)
411 retX = [123,["arbitrary output"],[]]
412 try:
413 if ret[1]: ret[1] = map(lambda x: x.replace('\r',''),ret[1])
414 if ret[2]: ret[2] = map(lambda x: x.replace('\r',''),ret[2])
415 assert ret ==retX
416 except:
417 print >>sys.stderr, ""
418 print >>sys.stderr, "retX="+str(retX)
419 print >>sys.stderr, "ret= "+str(ret)
420 assert sx.apply(ret)
421
422 pass
423
425 """Calls some interfaces for basic operational checks.
426
427 Args:
428 slang: The language type of the testscript,
429 current availble:
430
431 perl
432
433 python
434
435 bash
436
437 **kargs:
438
439 out:
440
441 verbose:
442
443 debug:
444
445 Returns:
446 None.
447
448 Raises:
449 In case of assertion errors.
450
451 """
452
453
454
455
456
457
458
459
460 if not slang:
461 if sys.platform == 'Windows':
462 _subcall_myscript('python',**kargs)
463 else:
464 _subcall_myscript('python',**kargs)
465
466
467 else:
468
469 _subcall_myscript(slang,**kargs)
470 pass
471