Skip to content

Commit 5fb03a8

Browse files
committed
=BG= write a dynamically generated karma.conf.js based on app JS file and all bower JS files.
- TODO refactor karma wrapper to read conf file from test directory instead
1 parent 7ac2d09 commit 5fb03a8

File tree

1 file changed

+79
-21
lines changed

1 file changed

+79
-21
lines changed

tasks/javascript.js

Lines changed: 79 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
'use strict';
22

3-
var gulp = require('gulp'),
4-
jshint = require('gulp-jshint'),
5-
rimraf = require('gulp-rimraf'),
6-
runSequence = require('run-sequence'),
7-
combined = require('combined-stream'),
8-
to5ify = require('6to5ify'),
9-
stringify = require('stringify'),
10-
wordwrap = require('wordwrap'),
11-
ngAnnotate = require('browserify-ngannotate');
12-
13-
var karma = require('../lib/test/karma'),
14-
browserify = require('../lib/build/browserify'),
15-
yargs = require('../lib/util/yargs'),
16-
hr = require('../lib/util/hr'),
17-
streams = require('../lib/config/streams'),
18-
jshintReporter = require('../lib/util/jshint-reporter');
3+
var path = require('path');
4+
5+
var gulp = require('gulp'),
6+
jshint = require('gulp-jshint'),
7+
rimraf = require('gulp-rimraf'),
8+
runSequence = require('run-sequence'),
9+
combined = require('combined-stream'),
10+
to5ify = require('6to5ify'),
11+
stringify = require('stringify'),
12+
through = require('through2'),
13+
wordwrap = require('wordwrap'),
14+
ngAnnotate = require('browserify-ngannotate');
15+
16+
var karma = require('../lib/test/karma'),
17+
browserify = require('../lib/build/browserify'),
18+
yargs = require('../lib/util/yargs'),
19+
hr = require('../lib/util/hr'),
20+
streams = require('../lib/config/streams'),
21+
jshintReporter = require('../lib/util/jshint-reporter');
1922

2023
var cliArgs;
2124
var transforms;
@@ -105,15 +108,70 @@ gulp.task('javascript:lint', function () {
105108
.pipe(jshintReporter.get(cliArgs.reporter));
106109
});
107110

111+
function karmaSpecFile() {
112+
var files = [];
113+
114+
function transformFn(file, encoding, done) {
115+
if (!file || !file.path) {
116+
throw 'Files must have paths';
117+
}
118+
var stream = this;
119+
//filter out all files (nothing added back to the stream)
120+
//but we save file paths for later use in the flush function
121+
files.push(file.path);
122+
done();
123+
}
124+
125+
function flushFn(done) {
126+
var stream = this;
127+
var contentAppend =
128+
'\n\nfiles = (files || []).concat(' +
129+
JSON.stringify(files, null, ' ') +
130+
');\n';
131+
console.log('contentAppend', contentAppend);
132+
133+
//aggregate and append to karma.conf.js in the project root folder
134+
gulp
135+
.src(path.join(process.cwd(), 'karma.conf.js'))
136+
.on('data', function(karmaConfigFile) {
137+
var contents = karmaConfigFile.contents.toString();
138+
contents += contentAppend;
139+
karmaConfigFile.contents = new Buffer(contents);
140+
stream.push(karmaConfigFile);
141+
})
142+
.on('end', function() {
143+
done();
144+
});
145+
}
146+
147+
return through.obj(transformFn, flushFn);
148+
}
149+
108150
// karma unit tests in local library only
109151
gulp.task('javascript:unit', function () {
110-
return streams.jsSpec()
111-
.pipe(browserify
112-
.compile(80, transforms.concat(browserify.jasmineTransform('@')))
113-
.all('index.js'))
152+
return combined.create()
153+
.append(
154+
streams
155+
.testDependencies({
156+
dev: true,
157+
read: false
158+
})
159+
.on('data', function(file) {
160+
console.log('test dependency file:', file.path);
161+
})
162+
)
163+
.append(
164+
streams
165+
.jsSpec()
166+
.pipe(browserify
167+
.compile(80, transforms.concat(browserify.jasmineTransform('@')))
168+
.all('index.js'))
169+
.pipe(gulp.dest(streams.TEST))
170+
)
171+
.pipe(karmaSpecFile())
114172
.pipe(gulp.dest(streams.TEST))
115173
.pipe(karma({
116-
files : streams.testDependencies({dev: true}).list,
174+
// files : .list,
117175
frameworks: ['jasmine'],
118176
reporters : ['spec'],
119177
browsers : ['Chrome'],

0 commit comments

Comments
 (0)