This repository has been archived by the owner on Sep 28, 2018. It is now read-only.
/
suite.js
84 lines (81 loc) · 3.08 KB
/
suite.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
// overwrite jspec matcher to support Crayon core extensions
load("spec/jspec.js");
load("spec/couchdb-server-main.js");
(function(){
JSpec.include({
name: 'JUnit',
formatters: {
JUnitXml: function(results, options) {
function e(s){
return s.toString().replace(/&/g, "&")
.replace(/\"/g, """)
.replace(/\'/g, "'")
.replace(/</g, "<")
.replace(/>/g, ">");
}
var w = new java.io.FileWriter('jspec.xml');
w.write('<?xml version="1.0" encoding="UTF-8"?>\n');
w.write('<testsuites>\n');
JSpec.each(results.allSuites, function(suite) {
var attribs = {
name: suite.description,
tests: suite.specs.length,
assertions: 0,
failures: 0,
specs: 0,
time: 0
};
var content = JSpec.inject(suite.specs, '', function(content, spec) {
attribs.assertions += spec.assertions.length;
attribs.failures += spec.passed() ? 0 : 1;
attribs.specs += 1;
attribs.time += spec.time || 0;
if( spec.passed() ){
return content +' <testcase '
+ 'name="'+ e(spec.description) +'" '
+ 'assertions="'+spec.assertions.length + '" '
+ 'time="' + spec.time + '"'
+ '/>\n';
}else{
content += ' <testcase '
+ 'name="'+ e(spec.description) +'" '
+ 'assertions="'+spec.assertions.length + '" '
+ 'time="' + spec.time + '"'
+ '>\n';
content += JSpec.inject(spec.assertions, '', function(c, assertion){
if( !assertion.passed ){
c += ' <failure message="' + e(assertion.message) + '">' + e(assertion.message) + '</failure>\n';
}
return c;
});
content += ' </testcase>\n';
return content;
}
});
w.write(' <testsuite');
for (var key in attribs) {
w.write(' ' + key + '="' + e(attribs[key]) + '"');
}
w.write('>\n');
w.write(content);
w.write(' </testsuite>\n');
});
w.write('</testsuites>\n');
w.close();
quit(results.stats.failures);
}
}
});
})();
JSpec.addMatchers({
match : "toString.call(actual) == '[object String]' ? actual.match(expected) : false"
});
function runSuites(formatter){
JSpec
.exec('spec/spec.crayon.js')
.exec('spec/spec.escape.js')
.exec('spec/spec.template.js')
.exec('spec/spec.text.js')
.run({ formatter: formatter })
.report();
}