-
Notifications
You must be signed in to change notification settings - Fork 0
/
jasmine-buster.js
61 lines (53 loc) · 1.38 KB
/
jasmine-buster.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
/**
* jasmine-buster 0.1.0
* https://www.github.com/mattfysh/jasmine-buster
* Distributed under the MIT license
*/
(function() {
// iterator
function each(coll, callback) {
var l = coll.length;
for (var i = 0; i < l; i += 1) {
callback(coll[i]);
}
}
// reporter constructor
jasmine.BusterReporter = function(options) {}
// runner has complete, pass results to buster
jasmine.BusterReporter.prototype.reportRunnerResults = function(runner) {
// format the results into the buster test case format
var suites = runner.topLevelSuites();
function createSuiteDefinition(suite) {
var def = {};
each(suite.children(), function(child) {
def[child.description] = child instanceof jasmine.Spec ?
createSpec(child) :
createSuiteDefinition(child);
});
return def;
}
function createSpec(spec) {
var items = spec.results().getItems();
return function() {
each(items, function(item) {
var err = item.trace;
if (!item.passed()) {
if (err instanceof Error === false) {
err = item.message.split(': ');
err = new window[err[0]](err[1]);
err.stack = item.trace.stack;
}
throw err;
}
assert(true);
});
}
}
each(suites, function(suite) {
var def = createSuiteDefinition(suite);
buster.testCase(suite.description, def);
});
// send the results to buster
buster.run();
}
}());