ng-factory
Version:
AngularJS industrialized development
79 lines (65 loc) • 2.08 kB
JavaScript
;
var path = require('path');
var gutil = require('gulp-util');
var karma = require('karma').server;
var bowerFiles = require('main-bower-files');
var inject = require('gulp-inject');
var merge = require('merge-stream');
var angularFilesort = require('gulp-angular-filesort');
module.exports = function(gulp, config) {
var src = config.src;
var test = config.test;
gulp.task('ng:test/karma~init', function(cb) {
return gulp.src('karma.conf.js', {cwd: test.cwd})
.pipe(inject(
merge(
gulp.src(bowerFiles({filter: /\.js$/, includeDev: true}), {read: false}),
gulp.src([path.join(src.cwd, src.scripts), path.join(test.tmp, '{,*/}*.tpl.js')], {read: true}).pipe(angularFilesort()),
gulp.src(path.join(test.cwd, test.tests), {read: true})
),
{
starttag: 'files: [',
endtag: ']',
transform: function (filepath, file, i, length) {
return ' \'' + filepath.substr(1) + '\'' + (i + 1 < length ? ',' : '');
}
}
))
.pipe(gulp.dest(test.tmp));
});
gulp.task('ng:test/karma', function(cb) {
karma.start({
configFile: path.resolve(test.cwd, 'karma.conf.js'),
reporters: ['dots'],
singleRun: true
}, function(code) {
gutil.log('Karma has exited with ' + code);
cb(code);
});
});
gulp.task('ng:test/karma:with(coverage)', function(cb) {
karma.start({
configFile: path.resolve(test.cwd, 'karma.conf.js'),
reporters: ['dots', 'coverage'],
preprocessors: {
'src/{,*/}*.js': 'coverage'
},
plugins: [
'karma-jasmine',
'karma-phantomjs-launcher',
'karma-coverage'
],
// Coverage reporter generates the coverage
coverageReporter: {
reporters:[
{type: 'lcov', dir:'test/coverage/'},
{type: 'text-summary', dir:'test/coverage/'}
]
},
singleRun: true
}, function(code) {
gutil.log('Karma has exited with ' + code);
cb(code);
});
});
};