-
Notifications
You must be signed in to change notification settings - Fork 212
/
Copy pathevents.py
77 lines (56 loc) · 1.62 KB
/
events.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
import time
import tests
recorded_events = []
def event(self, name, args, kwargs):
global recorded_events
print("*EVENT*", time.time(), self, name, args, kwargs)
recorded_events.append((time.time(), self, name, args, kwargs))
def eventfnc(f):
name = f.__name__
def wrapper(self, *args, **kwargs):
event(self, name, args, kwargs)
return f(self, *args, **kwargs)
return wrapper
def get_events():
global recorded_events
r = recorded_events
recorded_events = []
return r
def start_log():
global base_time
base_time = time.time()
def end_log(test_name):
global base_time
results = ""
for (t, self, method, args, kwargs) in get_events():
results += "%s T+%f: %s::%s(%s, *%s, *%s)\n" % (time.ctime(t), t - base_time, str(self.__class__), method, self, args, kwargs)
expected = None
try:
f = open(test_name + ".results", "rb")
expected = f.read()
f.close()
except:
print("NO TEST RESULT FOUND, creating new")
f = open(test_name + ".new_results", "wb")
f.write(results)
f.close()
print(results)
if expected is not None:
print("expected:")
if expected != results:
open(test_name + ".bogus_results", "wb").write(results)
raise tests.TestError("test data does not match")
else:
print("test compared ok")
else:
print("no test data to compare with.")
def log(fnc, base_time=0, test_name="test", *args, **kwargs):
import fake_time
fake_time.setTime(base_time)
start_log()
try:
fnc(*args, **kwargs)
event(None, "test_completed", [], {"test_name": test_name})
except tests.TestError as c:
event(None, "test_failed", [], {"test_name": test_name, "reason": str(c)})
end_log(test_name)