-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathactive_test.js
109 lines (108 loc) · 4 KB
/
active_test.js
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
103
104
105
106
107
108
109
var ActiveTest = {
pass: 0,
fail: 0,
error: 0,
currentGroupName: null,
currentTestName: null,
summary: [],
lastNote: '',
log: function log(msg)
{
if(ActiveTest.currentTestName)
{
msg = '[' + ActiveTest.currentTestName + '] ' + msg;
}
ActiveSupport.log(msg);
},
assert: function assert(condition,note)
{
ActiveTest.lastNote = note;
try
{
var pass = !!(typeof(condition) === 'function' ? condition() : condition);
++ActiveTest[pass ? 'pass' : 'fail'];
ActiveTest.log((pass ? 'Pass' : 'Fail') + (note ? ': ' + note : ''));
}
catch(e)
{
++ActiveTest.error;
ActiveTest.log('Error' + (note ? ': ' + note : ''));
ActiveTest.log(e);
}
},
run: function run(run_group_name)
{
ActiveTest.summary = [];
ActiveTest.lastNote = '';
ActiveTest.currentGroupName = null;
ActiveTest.currentTestName = null;
for(var group_name in ActiveTest.Tests)
{
if(!run_group_name || run_group_name == group_name)
{
ActiveTest.log(group_name + ' Test Starting');
ActiveTest.pass = 0;
ActiveTest.fail = 0;
ActiveTest.error = 0;
var stack = [];
if(ActiveTest.Tests[group_name].setup)
{
stack.push(function(){
ActiveTest.Tests[group_name].setup();
});
}
for(var test_name in ActiveTest.Tests[group_name])
{
if(test_name !== 'setup' && test_name !== 'teardown' && test_name !== 'cleanup')
{
stack.push(ActiveSupport.Function.curry(function(test_name){
ActiveTest.currentTestName = test_name;
try
{
ActiveTest.Tests[group_name][test_name]();
}
catch(e)
{
++ActiveTest.error;
ActiveTest.log('Error after test' + (ActiveTest.lastNote ? ': ' + ActiveTest.lastNote : ''));
ActiveTest.log(e);
throw e;
var output = '[' + group_name + ' Pass:' + ActiveTest.pass +',Fail:' + ActiveTest.fail + ',Error:' + ActiveTest.error + ']';
ActiveTest.summary.push(output);
ActiveTest.log(output);
}
},test_name));
if(ActiveTest.Tests[group_name].cleanup)
{
stack.push(function(){
ActiveTest.Tests[group_name].cleanup();
});
}
}
}
if(ActiveTest.Tests[group_name].teardown)
{
stack.push(function(){
ActiveTest.Tests[group_name].teardown();
});
}
stack.push(function(){
ActiveTest.currentTestName = null;
var output = '[' + group_name + ' Pass:' + ActiveTest.pass +',Fail:' + ActiveTest.fail + ',Error:' + ActiveTest.error + ']';
ActiveTest.summary.push(output);
ActiveTest.log(output);
});
for(var i = 0; i < stack.length; ++i){
stack[i]();
}
}
}
ActiveTest.log('SUMMARY');
ActiveTest.log('-------');
for(var i = 0; i < ActiveTest.summary.length; ++i)
{
ActiveTest.log(ActiveTest.summary[i]);
}
}
};
ActiveTest.Tests = {};