diff --git a/lib/cli/index.js b/lib/cli/index.js index ff92bc9810..1e7ae52535 100644 --- a/lib/cli/index.js +++ b/lib/cli/index.js @@ -58,7 +58,7 @@ function configureLogger(env) { // Options: Array cliArgs, Stream inputStream, Stream outputStream module.exports = function(options) { - var UI = options.UI || require('../ui'); + var UI = options.UI || require('command-ui'); var Yam = options.Yam || require('yam'); var CLI = require('./cli'); var Leek = options.Leek || require('leek'); diff --git a/lib/models/project.js b/lib/models/project.js index 35b7efde07..4b64359546 100644 --- a/lib/models/project.js +++ b/lib/models/project.js @@ -686,7 +686,7 @@ function ensureUI(_ui) { if (!ui) { // TODO: one UI (lib/cli/index.js also has one for now...) - var UI = require('../ui'); + var UI = require('command-ui'); ui = new UI({ inputStream: process.stdin, outputStream: process.stdout, diff --git a/lib/ui/index.js b/lib/ui/index.js deleted file mode 100644 index 4be61aabac..0000000000 --- a/lib/ui/index.js +++ /dev/null @@ -1,237 +0,0 @@ -'use strict'; - -var ora = require('ora'); -var EOL = require('os').EOL; -var chalk = require('chalk'); -var writeError = require('./write-error'); - -var DEFAULT_WRITE_LEVEL = 'INFO'; - -// Note: You should use `ui.outputStream`, `ui.inputStream` and `ui.write()` -// instead of `process.stdout` and `console.log`. -// Thus the pleasant progress indicator automatically gets -// interrupted and doesn't mess up the output! -> Convenience :P - -module.exports = UI; - -/** - The UI provides the CLI with a unified mechanism for providing output and - requesting input from the user. This becomes useful when wanting to adjust - logLevels, or mock input/output for tests. - - @class UI - @constructor - @param {Object} options Configuration options - - @example - ```js - new UI({ - inputStream: process.stdin, - outputStream: process.stdout, - writeLevel: 'DEBUG' | 'INFO' | 'WARNING' | 'ERROR', - ci: true | false - }); - ``` -*/ -function UI(options) { - var spinner = this.spinner = ora({ color: 'green' }); - - this.through = require('through'); - - // Output stream - this.actualOutputStream = options.outputStream; - this.outputStream = this.through(function(data) { - spinner.stop(); - this.emit('data', data); - }); - - this.outputStream.setMaxListeners(0); - this.outputStream.pipe(this.actualOutputStream); - - this.inputStream = options.inputStream; - this.errorStream = options.errorStream; - - this.errorLog = options.errorLog || []; - this.writeLevel = options.writeLevel || DEFAULT_WRITE_LEVEL; - this.ci = !!options.ci; -} - -/** - Unified mechanism to write a string to the console. - Optionally include a writeLevel, this is used to decide if the specific - logging mechanism should or should not be printed. - - @method write - @param {String} data - @param {String} [writeLevel='INFO'] -*/ -UI.prototype.write = function(data, writeLevel) { - if (writeLevel === 'ERROR') { - this.errorStream.write(data); - } else if (this.writeLevelVisible(writeLevel)) { - this.outputStream.write(data); - } -}; - -/** - Unified mechanism to write a string and new line to the console. - Optionally include a writeLevel, this is used to decide if the specific - logging mechanism should or should not be printed. - @method writeLine - @param {String} data - @param {String} [writeLevel='INFO'] -*/ -UI.prototype.writeLine = function(data, writeLevel) { - this.write(data + EOL, writeLevel); -}; - -/** - Helper method to write a string with the DEBUG writeLevel and gray chalk - @method writeDebugLine - @param {String} data -*/ -UI.prototype.writeDebugLine = function(data) { - this.writeLine(chalk.gray(data), 'DEBUG'); -}; - -/** - Helper method to write a string with the INFO writeLevel and cyan chalk - @method writeInfoLine - @param {String} data -*/ -UI.prototype.writeInfoLine = function(data) { - this.writeLine(chalk.cyan(data), 'INFO'); -}; - -/** - Helper method to write a string with the WARNING writeLevel and yellow chalk. - Optionally include a test. If falsy, the warning will be printed. By default, warnings - will be prepended with WARNING text when printed. - @method writeWarnLine - @param {String} data - @param {Boolean} test - @param {Boolean} prepend -*/ -UI.prototype.writeWarnLine = function(data, test, prepend) { - if (test) { return; } - - data = this.prependLine('WARNING', data, prepend); - this.writeLine(chalk.yellow(data), 'WARNING', test); -}; - -/** - Helper method to write a string with the WARNING writeLevel and yellow chalk. - Optionally include a test. If falsy, the deprecation will be printed. By default deprecations - will be prepended with DEPRECATION text when printed. - @method writeDeprecateLine - @param {String} data - @param {Boolean} test - @param {Boolean} prepend -*/ -UI.prototype.writeDeprecateLine = function(data, test, prepend) { - data = this.prependLine('DEPRECATION', data, prepend); - this.writeWarnLine(data, test, false); -}; - -/** - Utility method to prepend a line with a flag-like string (i.e., WARNING). - @method prependLine - @param {String} prependData - @param {String} data - @param {Boolean} prepend -*/ -UI.prototype.prependLine = function(prependData, data, prepend) { - if (typeof prepend === 'undefined' || prepend) { - data = prependData + ': ' + data; - } - - return data; -}; - -/** - Unified mechanism to an Error to the console. - This will occure at a writeLevel of ERROR - - @method writeError - @param {Error} error -*/ -UI.prototype.writeError = function(error) { - writeError(this, error); -}; - -/** - Sets the write level for the UI. Valid write levels are 'DEBUG', 'INFO', - 'WARNING', and 'ERROR'. - - @method setWriteLevel - @param {String} level -*/ -UI.prototype.setWriteLevel = function(level) { - if (Object.keys(this.WRITE_LEVELS).indexOf(level) === -1) { - throw new Error('Unknown write level. Valid values are \'DEBUG\', \'INFO\', \'WARNING\', and \'ERROR\'.'); - } - - this.writeLevel = level; -}; - -UI.prototype.startProgress = function(message/*, stepString*/) { - if (this.writeLevelVisible('INFO')) { - if (this.ci) { - this.writeLine(message); - } else { - this.spinner.text = message; - this.spinner.start(); - } - } -}; - -UI.prototype.stopProgress = function() { - if (this.writeLevelVisible('INFO') && !this.ci) { - this.spinner.stop(); - } -}; - -/** - Launch the prompt interface (inquiry session) with (Array of Questions || Question) - - See [Inquirer.js#question](https://github.com/SBoudrias/Inquirer.js#question) for Question {Object} properties - - @method prompt - @param {Object} questions - @param {Function} [callback] - @return {Promise} - - */ -UI.prototype.prompt = function(questions, callback) { - var inquirer = require('inquirer'); - - // If no callback was provided, automatically return a promise - return inquirer.prompt(questions, callback); -}; - -/** - @property WRITE_LEVELS - @private - @type Object -*/ -UI.prototype.WRITE_LEVELS = { - 'DEBUG': 1, - 'INFO': 2, - 'WARNING': 3, - 'ERROR': 4 -}; - -/** - Whether or not the specified write level should be printed by this UI. - - @method writeLevelVisible - @private - @param {String} writeLevel - @return {Boolean} -*/ -UI.prototype.writeLevelVisible = function(writeLevel) { - var levels = this.WRITE_LEVELS; - writeLevel = writeLevel || DEFAULT_WRITE_LEVEL; - - return levels[writeLevel] >= levels[this.writeLevel]; -}; diff --git a/lib/ui/write-error.js b/lib/ui/write-error.js deleted file mode 100644 index 5114f9da40..0000000000 --- a/lib/ui/write-error.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; -var chalk = require('chalk'); - -module.exports = function writeError(ui, error) { - if (!error) { return; } - - // Uglify errors have a filename instead - var fileName = error.file || error.filename; - if (fileName) { - if (error.line) { - fileName += error.col ? ' (' + error.line + ':' + error.col + ')' : ' (' + error.line + ')'; - } - ui.writeLine(chalk.red('File: ' + fileName), 'ERROR'); - } - - if (error.message) { - ui.writeLine(chalk.red(error.message), 'ERROR'); - } else { - ui.writeLine(chalk.red(error), 'ERROR'); - } - - if (error.stack) { - ui.writeLine(error.stack, 'ERROR'); - } -}; diff --git a/package.json b/package.json index 855048a8c3..587214eca0 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "clean-base-url": "^1.0.0", "compression": "^1.4.4", "configstore": "^2.0.0", + "console-ui": "^1.0.2", "core-object": "^2.0.2", "diff": "^1.3.1", "ember-cli-broccoli-sane-watcher": "^2.0.3", diff --git a/tests/factories/command-options.js b/tests/factories/command-options.js index 77826fd158..fcf312febc 100644 --- a/tests/factories/command-options.js +++ b/tests/factories/command-options.js @@ -1,7 +1,7 @@ 'use strict'; var defaults = require('ember-cli-lodash-subset').defaults; -var MockUI = require('../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('../helpers/mock-analytics'); var MockProject = require('../helpers/mock-project'); diff --git a/tests/helpers/ember.js b/tests/helpers/ember.js index 13be3b0f8f..e3b2f7ce77 100644 --- a/tests/helpers/ember.js +++ b/tests/helpers/ember.js @@ -1,6 +1,6 @@ 'use strict'; -var MockUI = require('./mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('./mock-analytics'); var cli = require('../../lib/cli'); var path = require('path'); diff --git a/tests/helpers/mock-project.js b/tests/helpers/mock-project.js index 0f0fd25c48..89ed758955 100644 --- a/tests/helpers/mock-project.js +++ b/tests/helpers/mock-project.js @@ -1,7 +1,7 @@ 'use strict'; var Project = require('../../lib/models/project'); -var MockUI = require('../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); function MockProject() { var root = process.cwd(); diff --git a/tests/helpers/mock-ui.js b/tests/helpers/mock-ui.js deleted file mode 100644 index 42aa830135..0000000000 --- a/tests/helpers/mock-ui.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var UI = require('../../lib/ui'); -var through = require('through'); -var Promise = require('../../lib/ext/promise'); - -module.exports = MockUI; -function MockUI(options) { - UI.call(this, { - inputStream: through(), - outputStream: through(function(data) { - if (options && options.outputStream) { - options.outputStream.push(data); - } - this.output += data; - }.bind(this)), - errorStream: through(function(data) { - this.errors += data; - }.bind(this)) - }); - - this.output = ''; - this.errors = ''; - this.errorLog = options && options.errorLog || []; -} - -MockUI.prototype = Object.create(UI.prototype); -MockUI.prototype.constructor = MockUI; -MockUI.prototype.clear = function() { - this.output = ''; - this.errors = ''; - this.errorLog = []; -}; diff --git a/tests/unit/analytics-test.js b/tests/unit/analytics-test.js index 3bab677ff2..854e39925e 100644 --- a/tests/unit/analytics-test.js +++ b/tests/unit/analytics-test.js @@ -2,7 +2,7 @@ var expect = require('chai').expect; var Command = require('../../lib/models/command'); -var MockUI = require('../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockProject = require('../helpers/mock-project'); var command; var called = false; diff --git a/tests/unit/broccoli/ember-app-test.js b/tests/unit/broccoli/ember-app-test.js index 4760f5d749..8c6ae24714 100644 --- a/tests/unit/broccoli/ember-app-test.js +++ b/tests/unit/broccoli/ember-app-test.js @@ -9,7 +9,7 @@ var expect = require('chai').expect; var proxyquire = require('proxyquire'); var td = require('testdouble'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var mergeTreesStub; var EmberApp = proxyquire('../../../lib/broccoli/ember-app', { diff --git a/tests/unit/broccoli/merge-trees-test.js b/tests/unit/broccoli/merge-trees-test.js index f2984adb9c..5c56c21fc9 100644 --- a/tests/unit/broccoli/merge-trees-test.js +++ b/tests/unit/broccoli/merge-trees-test.js @@ -7,7 +7,7 @@ var expect = require('chai').expect; var proxyquire = require('proxyquire'); var td = require('testdouble'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var mergeTreesStub; var mergeTrees = proxyquire('../../../lib/broccoli/merge-trees', { diff --git a/tests/unit/cli/cli-test.js b/tests/unit/cli/cli-test.js index a223d7890d..6de37c7c5b 100644 --- a/tests/unit/cli/cli-test.js +++ b/tests/unit/cli/cli-test.js @@ -1,7 +1,7 @@ 'use strict'; var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('../../helpers/mock-analytics'); var CLI = require('../../../lib/cli/cli'); var td = require('testdouble'); diff --git a/tests/unit/cli/lookup-command-test.js b/tests/unit/cli/lookup-command-test.js index d2d07cb4d0..48a484231b 100644 --- a/tests/unit/cli/lookup-command-test.js +++ b/tests/unit/cli/lookup-command-test.js @@ -4,7 +4,7 @@ var expect = require('chai').expect; var lookupCommand = require('../../../lib/cli/lookup-command'); var Command = require('../../../lib/models/command'); var Project = require('../../../lib/models/project'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var AddonCommand = require('../../fixtures/addon/commands/addon-command'); var OtherCommand = require('../../fixtures/addon/commands/other-addon-command'); var ClassCommand = require('../../fixtures/addon/commands/addon-command-class'); diff --git a/tests/unit/commands/init-test.js b/tests/unit/commands/init-test.js index aa87fa1b0b..42226d89df 100644 --- a/tests/unit/commands/init-test.js +++ b/tests/unit/commands/init-test.js @@ -5,7 +5,7 @@ var os = require('os'); var path = require('path'); var expect = require('chai').expect; var map = require('ember-cli-lodash-subset').map; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('../../helpers/mock-analytics'); var Promise = require('../../../lib/ext/promise'); var Blueprint = require('../../../lib/models/blueprint'); diff --git a/tests/unit/models/addon-discovery-test.js b/tests/unit/models/addon-discovery-test.js index 78c5b1b5a6..10df312f4d 100644 --- a/tests/unit/models/addon-discovery-test.js +++ b/tests/unit/models/addon-discovery-test.js @@ -6,7 +6,7 @@ var assign = require('ember-cli-lodash-subset').assign; var Project = require('../../../lib/models/project'); var AddonDiscovery = require('../../../lib/models/addon-discovery'); var fixturePath = path.resolve(__dirname, '../../fixtures/addon'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var chalk = require('chalk'); describe('models/addon-discovery.js', function() { diff --git a/tests/unit/models/addon-test.js b/tests/unit/models/addon-test.js index 0e433d65dc..9d0a909084 100644 --- a/tests/unit/models/addon-test.js +++ b/tests/unit/models/addon-test.js @@ -8,7 +8,7 @@ var Promise = require('../../../lib/ext/promise'); var expect = require('chai').expect; var remove = Promise.denodeify(fs.remove); var findWhere = require('ember-cli-lodash-subset').find; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var mkTmpDirIn = require('../../../lib/utilities/mk-tmp-dir-in'); var broccoli = require('broccoli-builder'); diff --git a/tests/unit/models/asset-size-printer-test.js b/tests/unit/models/asset-size-printer-test.js index de5b6fba82..a5f362bb45 100644 --- a/tests/unit/models/asset-size-printer-test.js +++ b/tests/unit/models/asset-size-printer-test.js @@ -1,7 +1,7 @@ 'use strict'; var expect = require('chai').expect; -var MockUi = require('../../helpers/mock-ui'); +var MockUi = require('console-ui/mock'); var AssetSizePrinter = require('../../../lib/models/asset-size-printer'); var Promise = require('../../../lib/ext/promise'); var path = require('path'); diff --git a/tests/unit/models/blueprint-test.js b/tests/unit/models/blueprint-test.js index f1bb6c37ed..a2618aaa35 100644 --- a/tests/unit/models/blueprint-test.js +++ b/tests/unit/models/blueprint-test.js @@ -4,7 +4,7 @@ var fs = require('fs-extra'); var Task = require('../../../lib/models/task'); var MockProject = require('../../helpers/mock-project'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var processHelpString = require('../../helpers/process-help-string'); var expect = require('chai').expect; var path = require('path'); diff --git a/tests/unit/models/file-info-test.js b/tests/unit/models/file-info-test.js index 3fde0440bf..d2d0b7a37e 100644 --- a/tests/unit/models/file-info-test.js +++ b/tests/unit/models/file-info-test.js @@ -1,7 +1,7 @@ 'use strict'; var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var FileInfo = require('../../../lib/models/file-info'); var path = require('path'); var fs = require('fs-extra'); diff --git a/tests/unit/models/project-test.js b/tests/unit/models/project-test.js index 34545cce9a..7c4a333a1f 100644 --- a/tests/unit/models/project-test.js +++ b/tests/unit/models/project-test.js @@ -6,7 +6,7 @@ var Addon = require('../../../lib/models/addon'); var tmp = require('../../helpers/tmp'); var touch = require('../../helpers/file-utils').touch; var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var emberCLIVersion = require('../../../lib/utilities/version-utils').emberCLIVersion; var td = require('testdouble') diff --git a/tests/unit/models/server-watcher-test.js b/tests/unit/models/server-watcher-test.js index 0f780da152..9530b65dea 100644 --- a/tests/unit/models/server-watcher-test.js +++ b/tests/unit/models/server-watcher-test.js @@ -2,7 +2,7 @@ var expect = require('chai').expect; var EOL = require('os').EOL; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('../../helpers/mock-analytics'); var MockServerWatcher = require('../../helpers/mock-watcher'); var ServerWatcher = require('../../../lib/models/server-watcher'); diff --git a/tests/unit/models/watch-detector-test.js b/tests/unit/models/watch-detector-test.js index 6cda4eaa9b..902c2baa03 100644 --- a/tests/unit/models/watch-detector-test.js +++ b/tests/unit/models/watch-detector-test.js @@ -2,7 +2,7 @@ var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var WatchDetector = require('../../../lib/models/watch-detector'); var EOL = require('os').EOL; var chalk = require('chalk'); diff --git a/tests/unit/models/watcher-test.js b/tests/unit/models/watcher-test.js index ef134ba9bb..1d5d5f430b 100644 --- a/tests/unit/models/watcher-test.js +++ b/tests/unit/models/watcher-test.js @@ -2,7 +2,7 @@ var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('../../helpers/mock-analytics'); var MockWatcher = require('../../helpers/mock-watcher'); var Watcher = require('../../../lib/models/watcher'); diff --git a/tests/unit/settings-file/leek-options-test.js b/tests/unit/settings-file/leek-options-test.js index 7f4b3135cb..e028b7819f 100644 --- a/tests/unit/settings-file/leek-options-test.js +++ b/tests/unit/settings-file/leek-options-test.js @@ -1,7 +1,7 @@ 'use strict'; var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var Yam = require('yam'); var cliEntry = require('../../../lib/cli'); diff --git a/tests/unit/settings-file/precedence-settings-test.js b/tests/unit/settings-file/precedence-settings-test.js index 5cea203a9c..d7c2d09810 100644 --- a/tests/unit/settings-file/precedence-settings-test.js +++ b/tests/unit/settings-file/precedence-settings-test.js @@ -2,7 +2,7 @@ var expect = require('chai').expect; var merge = require('ember-cli-lodash-subset').merge; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockAnalytics = require('../../helpers/mock-analytics'); var Command = require('../../../lib/models/command'); var Yam = require('yam'); diff --git a/tests/unit/tasks/addon-install-test.js b/tests/unit/tasks/addon-install-test.js index 28a0742b4d..8357e8a055 100644 --- a/tests/unit/tasks/addon-install-test.js +++ b/tests/unit/tasks/addon-install-test.js @@ -1,7 +1,7 @@ 'use strict'; var AddonInstallTask = require('../../../lib/tasks/addon-install'); -var MockProject = require('../../helpers/mock-project'); +var MockProject = require('console-ui/mock'); var expect = require('chai').expect; var CoreObject = require('core-object'); var Promise = require('rsvp').Promise; diff --git a/tests/unit/tasks/bower-install-test.js b/tests/unit/tasks/bower-install-test.js index 09a1de9695..2208b9717f 100644 --- a/tests/unit/tasks/bower-install-test.js +++ b/tests/unit/tasks/bower-install-test.js @@ -1,7 +1,7 @@ 'use strict'; var BowerInstallTask = require('../../../lib/tasks/bower-install'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockProject = require('../../helpers/mock-project'); var expect = require('chai').expect; diff --git a/tests/unit/tasks/git-init-test.js b/tests/unit/tasks/git-init-test.js index c9e8254e7b..4a4ac00be0 100644 --- a/tests/unit/tasks/git-init-test.js +++ b/tests/unit/tasks/git-init-test.js @@ -2,7 +2,7 @@ var fs = require('fs-extra'); var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var GitInitTask = require('../../../lib/tasks/git-init'); var MockProject = require('../../helpers/mock-project'); var Promise = require('../../../lib/ext/promise'); diff --git a/tests/unit/tasks/npm-install-test.js b/tests/unit/tasks/npm-install-test.js index ea8747c3f2..3d11bd2333 100644 --- a/tests/unit/tasks/npm-install-test.js +++ b/tests/unit/tasks/npm-install-test.js @@ -1,7 +1,7 @@ 'use strict'; var NpmInstallTask = require('../../../lib/tasks/npm-install'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var expect = require('chai').expect; describe('npm install task', function() { diff --git a/tests/unit/tasks/server/express-server-test.js b/tests/unit/tasks/server/express-server-test.js index 1973725c93..eff205a1ed 100644 --- a/tests/unit/tasks/server/express-server-test.js +++ b/tests/unit/tasks/server/express-server-test.js @@ -3,7 +3,7 @@ var expect = require('chai').expect; var ExpressServer = require('../../../../lib/tasks/server/express-server'); var Promise = require('../../../../lib/ext/promise'); -var MockUI = require('../../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockProject = require('../../../helpers/mock-project'); var MockWatcher = require('../../../helpers/mock-watcher'); var MockServerWatcher = require('../../../helpers/mock-server-watcher'); diff --git a/tests/unit/tasks/server/livereload-server-test.js b/tests/unit/tasks/server/livereload-server-test.js index d94f136992..4aa1fb19ad 100644 --- a/tests/unit/tasks/server/livereload-server-test.js +++ b/tests/unit/tasks/server/livereload-server-test.js @@ -2,7 +2,7 @@ var expect = require('chai').expect; var LiveReloadServer = require('../../../../lib/tasks/server/livereload-server'); -var MockUI = require('../../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockExpressServer = require('../../../helpers/mock-express-server'); var net = require('net'); var EOL = require('os').EOL; diff --git a/tests/unit/tasks/test-server-test.js b/tests/unit/tasks/test-server-test.js index 4274a18d13..7dbeb9098d 100644 --- a/tests/unit/tasks/test-server-test.js +++ b/tests/unit/tasks/test-server-test.js @@ -4,7 +4,7 @@ var expect = require('chai').expect; var SilentError = require('silent-error'); var TestServerTask = require('../../../lib/tasks/test-server'); var MockProject = require('../../helpers/mock-project'); -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var MockWatcher = require('../../helpers/mock-watcher'); describe('test server', function() { diff --git a/tests/unit/tasks/update-test.js b/tests/unit/tasks/update-test.js index 7ac1dc3e7a..6530970d81 100644 --- a/tests/unit/tasks/update-test.js +++ b/tests/unit/tasks/update-test.js @@ -3,7 +3,7 @@ var fs = require('fs-extra'); var path = require('path'); var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); var Promise = require('../../../lib/ext/promise'); var UpdateTask = require('../../../lib/tasks/update'); diff --git a/tests/unit/ui/index-test.js b/tests/unit/ui/index-test.js deleted file mode 100644 index 7e2298fe4a..0000000000 --- a/tests/unit/ui/index-test.js +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); -var EOL = require('os').EOL; -var chalk = require('chalk'); - -describe('UI', function() { - var ui; - - beforeEach(function() { - ui = new MockUI(); - }); - - describe('writeDebugLine', function() { - it('does not write at the default level', function() { - ui.writeDebugLine('foo'); - expect(ui.output).to.equal(''); - }); - - it('writes in the correct chalk', function() { - ui.writeLevel = 'DEBUG'; - ui.writeDebugLine('foo'); - expect(ui.output).to.equal(chalk.gray('foo') + EOL); - }); - }); - - describe('writeInfoLine', function() { - it('writes in the correct chalk', function() { - ui.writeInfoLine('foo'); - expect(ui.output).to.equal(chalk.cyan('foo') + EOL); - }); - }); - - describe('writeWarningLine', function() { - it('does not write when the test is truthy', function() { - ui.writeWarnLine('foo', true); - expect(ui.output).to.equal(''); - }); - - it('writes a prepended message when the test is falsy', function() { - ui.writeWarnLine('foo', false); - expect(ui.output).to.equal(chalk.yellow('WARNING: foo') + EOL); - }); - - it('writes an un-prepended message if prepend is false', function() { - ui.writeWarnLine('foo', false, false); - expect(ui.output).to.equal(chalk.yellow('foo') + EOL); - }); - }); - - describe('writeDeprecateLine', function() { - it('does not write when the test is truthy', function() { - ui.writeDeprecateLine('foo', true); - expect(ui.output).to.equal(''); - }); - - it('writes a prepended message when the test is falsy', function() { - ui.writeDeprecateLine('foo', false); - expect(ui.output).to.equal(chalk.yellow('DEPRECATION: foo') + EOL); - }); - - it('writes an un-prepended message if prepend is false', function() { - ui.writeDeprecateLine('foo', false, false); - expect(ui.output).to.equal(chalk.yellow('foo') + EOL); - }); - }); - - describe('prependLine', function() { - it('prepends the data when prepend is undefined', function() { - var result = ui.prependLine('foo', 'bar'); - expect(result).to.equal('foo: bar'); - }); - - it('prepends the data when prepend is true', function() { - var result = ui.prependLine('foo', 'bar', true); - expect(result).to.equal('foo: bar'); - }); - - it('returns the original data when prepend is falsy (but not undefined)', function() { - var result = ui.prependLine('foo', 'bar', false); - expect(result).to.equal('bar'); - }); - }); -}); diff --git a/tests/unit/ui/write-error-test.js b/tests/unit/ui/write-error-test.js deleted file mode 100644 index 75f4eb99aa..0000000000 --- a/tests/unit/ui/write-error-test.js +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; - -var expect = require('chai').expect; -var writeError = require('../../../lib/ui/write-error'); -var MockUI = require('../../helpers/mock-ui'); -var BuildError = require('../../helpers/build-error'); -var EOL = require('os').EOL; -var chalk = require('chalk'); - -describe('writeError', function() { - var ui; - - beforeEach(function() { - ui = new MockUI(); - }); - - it('no error', function() { - writeError(ui); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(''); - }); - - it('error with message', function() { - writeError(ui, new BuildError({ - message: 'build error' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('build error') + EOL); - }); - - it('error with stack', function() { - writeError(ui, new BuildError({ - stack: 'the stack' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('Error') + EOL + 'the stack' + EOL); - }); - - it('error with file', function() { - writeError(ui, new BuildError({ - file: 'the file' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('File: the file') + EOL + chalk.red('Error') + EOL); - }); - - it('error with filename (as from Uglify)', function() { - writeError(ui, new BuildError({ - filename: 'the file' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('File: the file') + EOL + chalk.red('Error') + EOL); - }); - - it('error with file + line', function() { - writeError(ui, new BuildError({ - file: 'the file', - line: 'the line' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('File: the file (the line)') + EOL + chalk.red('Error') + EOL); - }); - - it('error with file + col', function() { - writeError(ui, new BuildError({ - file: 'the file', - col: 'the col' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('File: the file') + EOL + chalk.red('Error') + EOL); - }); - - it('error with file + line + col', function() { - writeError(ui, new BuildError({ - file: 'the file', - line: 'the line', - col: 'the col' - })); - - expect(ui.output).to.equal(''); - expect(ui.errors).to.equal(chalk.red('File: the file (the line:the col)') + EOL + chalk.red('Error') + EOL); - }); -}); diff --git a/tests/unit/utilities/windows-admin-test.js b/tests/unit/utilities/windows-admin-test.js index 7b6086618b..1adf63c377 100644 --- a/tests/unit/utilities/windows-admin-test.js +++ b/tests/unit/utilities/windows-admin-test.js @@ -2,7 +2,7 @@ var win = require('../../../lib/utilities/windows-admin'); var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); +var MockUI = require('console-ui/mock'); describe('windows-admin', function() { before(function() {