From 4c49f4a282c2f8caf08fec48602b3b5281e41525 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Tue, 25 Apr 2017 11:53:29 -0500 Subject: [PATCH] Update: Add flags.continue to config --- index.js | 16 ++--- lib/shared/config/cli-flags.js | 1 + test/config-flags-continue.js | 67 +++++++++++++++++++ .../config/flags/continue/f/.gulp.json | 5 ++ .../config/flags/continue/f/gulpfile.js | 13 ++++ .../config/flags/continue/t/.gulp.json | 5 ++ .../config/flags/continue/t/gulpfile.js | 13 ++++ test/lib/config-cli-flags.js | 2 + 8 files changed, 114 insertions(+), 8 deletions(-) create mode 100644 test/config-flags-continue.js create mode 100644 test/fixtures/config/flags/continue/f/.gulp.json create mode 100644 test/fixtures/config/flags/continue/f/gulpfile.js create mode 100644 test/fixtures/config/flags/continue/t/.gulp.json create mode 100644 test/fixtures/config/flags/continue/t/gulpfile.js diff --git a/index.js b/index.js index e6238b2e..87ef29e9 100644 --- a/index.js +++ b/index.js @@ -59,14 +59,6 @@ var usage = var parser = yargs.usage(usage, cliOptions); var opts = parser.argv; -// This translates the --continue flag in gulp -// To the settle env variable for undertaker -// We use the process.env so the user's gulpfile -// Can know about the flag -if (opts.continue) { - process.env.UNDERTAKER_SETTLE = 'true'; -} - // Set up event listeners for logging temporarily. toConsole(log, opts); @@ -103,6 +95,14 @@ function handleArguments(env) { opts = mergeConfigToCliFlags(opts, cfg); env = mergeConfigToEnvFlags(env, cfg); + // This translates the --continue flag in gulp + // To the settle env variable for undertaker + // We use the process.env so the user's gulpfile + // Can know about the flag + if (opts.continue) { + process.env.UNDERTAKER_SETTLE = 'true'; + } + // Set up event listeners for logging again after configuring. toConsole(log, opts); diff --git a/lib/shared/config/cli-flags.js b/lib/shared/config/cli-flags.js index ad79aa58..42567fe7 100644 --- a/lib/shared/config/cli-flags.js +++ b/lib/shared/config/cli-flags.js @@ -4,6 +4,7 @@ var copyProps = require('copy-props'); var fromTo = { 'flags.silent': 'silent', + 'flags.continue': 'continue', }; function mergeConfigToCliFlags(opt, config) { diff --git a/test/config-flags-continue.js b/test/config-flags-continue.js new file mode 100644 index 00000000..753fe8d5 --- /dev/null +++ b/test/config-flags-continue.js @@ -0,0 +1,67 @@ +'use strict'; + +var expect = require('expect'); +var path = require('path'); +var skipLines = require('gulp-test-tools').skipLines; +var headLines = require('gulp-test-tools').headLines; +var eraseTime = require('gulp-test-tools').eraseTime; +var eraseLapse = require('gulp-test-tools').eraseLapse; + +var fixturesDir = path.join(__dirname, 'fixtures/config'); +var runner = require('gulp-test-tools').gulpRunner({ verbose: false }).basedir(fixturesDir); + +describe('config: flags.continue', function() { + + it('Should continue if `flags.continue` is true in .gulp.*', + function(done) { + runner + .chdir('flags/continue/t') + .gulp() + .run(cb); + + function cb(err, stdout, stderr) { + expect(err).toNotEqual(null); + + stdout = eraseLapse(eraseTime(skipLines(stdout, 1))); + expect(stdout).toEqual( + 'Starting \'default\'...\n' + + 'Starting \'err\'...\n' + + 'Starting \'next\'...\n' + + 'Finished \'next\' after ?\n' + + '' + ); + stderr = eraseLapse(eraseTime(headLines(stderr, 2))); + expect(stderr).toEqual( + '\'err\' errored after ?\n' + + 'Error: Error!' + ); + done(); + } + }); + + it('Should not continue if `flags.continue` is false in .gulp.*', + function(done) { + runner + .chdir('flags/continue/f') + .gulp() + .run(cb); + + function cb(err, stdout, stderr) { + expect(err).toNotEqual(null); + + stdout = eraseLapse(eraseTime(skipLines(stdout, 1))); + expect(stdout).toEqual( + 'Starting \'default\'...\n' + + 'Starting \'err\'...\n' + + '' + ); + stderr = eraseLapse(eraseTime(headLines(stderr, 2))); + expect(stderr).toEqual( + '\'err\' errored after ?\n' + + 'Error: Error!' + ); + done(); + } + }); + +}); diff --git a/test/fixtures/config/flags/continue/f/.gulp.json b/test/fixtures/config/flags/continue/f/.gulp.json new file mode 100644 index 00000000..e0a7cbf2 --- /dev/null +++ b/test/fixtures/config/flags/continue/f/.gulp.json @@ -0,0 +1,5 @@ +{ + "flags": { + "continue": false + } +} diff --git a/test/fixtures/config/flags/continue/f/gulpfile.js b/test/fixtures/config/flags/continue/f/gulpfile.js new file mode 100644 index 00000000..1ea100cf --- /dev/null +++ b/test/fixtures/config/flags/continue/f/gulpfile.js @@ -0,0 +1,13 @@ +'use strict'; + +var gulp = require('gulp'); + +function err(done) { + done(new Error('Error!')); +} + +function next(done) { + done(); +} + +gulp.task('default', gulp.series(err, next)); diff --git a/test/fixtures/config/flags/continue/t/.gulp.json b/test/fixtures/config/flags/continue/t/.gulp.json new file mode 100644 index 00000000..7161f7a2 --- /dev/null +++ b/test/fixtures/config/flags/continue/t/.gulp.json @@ -0,0 +1,5 @@ +{ + "flags": { + "continue": true + } +} diff --git a/test/fixtures/config/flags/continue/t/gulpfile.js b/test/fixtures/config/flags/continue/t/gulpfile.js new file mode 100644 index 00000000..1ea100cf --- /dev/null +++ b/test/fixtures/config/flags/continue/t/gulpfile.js @@ -0,0 +1,13 @@ +'use strict'; + +var gulp = require('gulp'); + +function err(done) { + done(new Error('Error!')); +} + +function next(done) { + done(); +} + +gulp.task('default', gulp.series(err, next)); diff --git a/test/lib/config-cli-flags.js b/test/lib/config-cli-flags.js index c541095d..54cfe8f6 100644 --- a/test/lib/config-cli-flags.js +++ b/test/lib/config-cli-flags.js @@ -12,6 +12,7 @@ describe('lib: config/cli-flags', function() { description: 'DESCRIPTION.', flags: { silent: true, + continue: true, gulpfile: '/path/to/gulpfile', }, }; @@ -19,6 +20,7 @@ describe('lib: config/cli-flags', function() { var result = mergeConfig(opts, config); expect(result).toEqual({ silent: true, + continue: true, }); done(); });