forked from alfredodeza/konira
/
util.py
executable file
·102 lines (75 loc) · 2.08 KB
/
util.py
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
94
95
96
97
98
99
100
101
102
import re
import time
import sys
import inspect
if sys.version < '3':
from cStringIO import StringIO
else:
from io import StringIO
def return_exception_trace():
"""
For testing purposes we need some valid
tracebacks created for assertions.
"""
try:
assert False
except Exception, e:
trace = inspect.trace()
return dict(
failure = sys.exc_info(),
trace = trace,
exc_name = e.__class__.__name__
)
def name_convertion(name, capitalize=True):
name = name.replace('_', ' ').replace('Case', '')
if capitalize:
name = name.capitalize()
return name.strip()
def get_class_name(class_name):
try:
name = str(class_name).split("'")[1]
except IndexError:
return class_name
if name.startswith('Case_'):
return name
#
# Let helpers
#
def get_let_name(method_name):
return method_name.split('_let_')[-1]
def set_let_attrs(suite, let_map):
if not let_map:
return suite
for k, v in let_map.items():
setattr(suite, k, v)
return let_map
def get_let_attrs(suite):
let_methods = collect_let_attrs(suite)
if not let_methods:
return {}
value = getattr(suite, let_methods[-1])
let_map = {}
for method in let_methods:
value = getattr(suite, method)
valid_method = get_let_name(method)
let_map[valid_method] = value
return let_map
def collect_let_attrs(module):
valid_let_method = re.compile(r'_let_[_a-z]\w*$', re.IGNORECASE)
return [i for i in dir(module) if valid_let_method.match(i)]
class StopWatch(object):
def __init__(self, raw=False):
self.raw = raw
self.start = time.time()
def elapsed(self):
_elapsed = str(time.time() - self.start)
if not self.raw:
return _elapsed[:5]
return _elapsed
runner_options = dict(
first_fail = False,
capturing = True,
traceback = False,
dotted = False,
profiling = False
)