123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- var gulp = require("gulp");
- var istanbul = require("gulp-istanbul");
- var mocha = require("gulp-mocha");
- var plumber = require("gulp-plumber");
- var jshint = require("gulp-jshint");
- var uglify = require("gulp-uglify");
- var jscs = require("gulp-jscs");
- var coveralls = require("gulp-coveralls");
- var rename = require("gulp-rename");
- var options = require("yargs").argv;
- var pkg = require("./package");
- /**
- */
- var paths = {
- testFiles : ["test/**/*-test.js"],
- appFiles : ["sift.js"],
- allFiles : ["test/**/*-test.js", "sift.js"]
- };
- /**
- */
- var mochaOptions = {
- bail : options.bail !== 'false',
- reporter : options.reporter || 'dot',
- grep : options.grep || options.only,
- timeout : 500
- }
- /**
- */
- gulp.task("test-coverage", function (complete) {
- gulp.
- src(paths.appFiles).
- pipe(istanbul()).
- pipe(istanbul.hookRequire()).
- on("finish", function () {
- gulp.
- src(paths.testFiles).
- pipe(plumber()).
- pipe(mocha(mochaOptions)).
- pipe(istanbul.writeReports({
- reporters: ["text","text-summary", "lcov"]
- })).
- on("end", complete);
- });
- });
- /**
- */
- gulp.task("test-coveralls", ["test-coverage"], function () {
- return gulp.
- src("coverage/**/lcov.info").
- pipe(coveralls());
- });
- /**
- */
- gulp.task("minify", function() {
- return gulp.
- src("./" + pkg.name + ".js").
- pipe(uglify()).
- pipe(rename(function(path) {
- path.basename += ".min";
- })).
- pipe(gulp.dest("./"));
- });
- /**
- */
- gulp.task("lint", function() {
- return gulp.run(["jshint", "jscs"]);
- });
- /**
- */
- gulp.task("jscs", function() {
- return gulp.
- src(paths.allFiles).
- pipe(jscs({
- "preset": "google",
- "requireParenthesesAroundIIFE": true,
- "maximumLineLength": 200,
- "validateLineBreaks": "LF",
- "validateIndentation": 2,
- "validateQuoteMarks": "\"",
- "disallowKeywords": ["with"],
- "disallowSpacesInsideObjectBrackets": null,
- "disallowImplicitTypeConversion": ["string"],
- "requireCurlyBraces": [],
- "safeContextKeyword": "self"
- }));
- });
- /**
- */
- gulp.task("jshint", function() {
- return gulp.
- src(paths.allFiles).
- pipe(jshint({
- es3: true,
- evil: true
- })).
- pipe(jshint.reporter('default'));
- });
- /**
- */
- gulp.task("test", function (complete) {
- gulp.
- src(paths.testFiles, { read: false }).
- pipe(plumber()).
- pipe(mocha(mochaOptions)).
- on("error", complete).
- on("end", complete);
- });
- var iofwatch = process.argv.indexOf("watch");
- /**
- * runs previous tasks (1 or more)
- */
- gulp.task("watch", function () {
- gulp.watch(paths.allFiles, process.argv.slice(2, iofwatch));
- });
- /**
- */
- gulp.task("default", function () {
- return gulp.run("test-coverage");
- });
- /**
- */
- gulp.doneCallback = function (err) {
- // a bit hacky, but fixes issue with testing where process
- // doesn't exist process. Also fixes case where timeout / interval are set (CC)
- if (!~iofwatch) process.exit(err ? 1 : 0);
- };
|