@@ -9,7 +9,8 @@ var fs = require('fs'),
9
9
var istanbul = require ( 'istanbul' ) ,
10
10
Jasmine = require ( 'jasmine' ) ,
11
11
SpecReporter = require ( 'jasmine-spec-reporter' ) ,
12
- deepmerge = require ( 'deepmerge' ) ;
12
+ deepmerge = require ( 'deepmerge' ) ,
13
+ reporters = require ( 'jasmine-reporters' ) ;
13
14
14
15
module . exports = function jasmineNodeTask ( grunt ) {
15
16
@@ -169,6 +170,21 @@ module.exports = function jasmineNodeTask(grunt) {
169
170
} ;
170
171
} ;
171
172
173
+ var addReporters = function addReporters ( jasmine ) {
174
+ var ropts = options . jasmine . reporters ;
175
+
176
+ var reporter ;
177
+ if ( ropts . teamcity ) {
178
+ reporter = new reporters . TeamCityReporter ( ) ; // no options to set
179
+ reporter . name = 'TeamCity Reporter' ;
180
+ jasmine . addReporter ( reporter ) ;
181
+ }
182
+ else {
183
+ reporter = new SpecReporter ( ropts . spec ) ;
184
+ reporter . name = 'Spec Reporter' ;
185
+ jasmine . addReporter ( reporter ) ;
186
+ }
187
+ } ;
172
188
173
189
var runner = function runner ( opts ) {
174
190
opts = opts || { } ;
@@ -187,7 +203,7 @@ module.exports = function jasmineNodeTask(grunt) {
187
203
try {
188
204
var jasmine = new Jasmine ( ) ;
189
205
jasmine . loadConfig ( options . jasmine ) ;
190
- jasmine . addReporter ( new SpecReporter ( options . jasmine . reporter ) ) ;
206
+ addReporters ( jasmine ) ;
191
207
jasmine . onComplete ( function ( passed ) {
192
208
options . onComplete ( passed , opts ) ;
193
209
} ) ;
@@ -212,6 +228,12 @@ module.exports = function jasmineNodeTask(grunt) {
212
228
grunt . file . mkdir ( reportingDir ) ; // ensure we fail early if we cannot do this
213
229
214
230
var reportClassNames = options . coverage . report ;
231
+
232
+ // Add teamcity to the coverage reporter if it was set as jasmine reporter
233
+ if ( options . jasmine . reporters . teamcity && reportClassNames . indexOf ( 'teamcity' ) === - 1 ) {
234
+ reportClassNames = reportClassNames . concat ( [ 'teamcity' ] ) ;
235
+ }
236
+
215
237
reportClassNames . forEach ( function eachReport ( reportClassName ) {
216
238
reports . push ( Report . create ( reportClassName , {
217
239
dir : reportingDir ,
@@ -253,7 +275,9 @@ module.exports = function jasmineNodeTask(grunt) {
253
275
// Jasmine options
254
276
jasmine : {
255
277
spec_dir : 'spec' ,
256
- reporter : { }
278
+ reporters : {
279
+ spec : { }
280
+ }
257
281
} ,
258
282
259
283
// Coverage options
@@ -275,6 +299,13 @@ module.exports = function jasmineNodeTask(grunt) {
275
299
}
276
300
} , this . options ( ) ) ;
277
301
302
+ // Support old config with Spec reporter only
303
+ if ( options . jasmine . reporter ) {
304
+ options . jasmine . reporters = {
305
+ spec : options . jasmine . reporter
306
+ } ;
307
+ }
308
+
278
309
options . jasmine . spec_files = options . jasmine . spec_files || [ '**/*[sS]pec.js' ] ;
279
310
if ( options . coverage !== false ) {
280
311
options . coverage . report = options . coverage . report || [ 'lcov' , 'text-summary' ] ;
0 commit comments