diff --git a/test/cli/steps.js b/test/cli/steps.js new file mode 100755 index 0000000000..0cde68c303 --- /dev/null +++ b/test/cli/steps.js @@ -0,0 +1,37 @@ +const test = require('tape'); +const cli = require('../../src/cli'); +const stdout = require('./util/readConsole').stdout; +const stderr = require('./util/readConsole').stderr; + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +test('testing steps parsing', function (t) { + + t.plan(1); + + let out = stdout.read(); + + cli([ + 'node', 'test', + '-i', 'examples/images/test.png', + '-s', 'invert', + ]); + + sleep(1000).then(() => { + out.restore(); + let validator = out.output().includes('Added Step "invert"'); + t.true(validator, 'Steps parsed successfully'); + }); + + +// let err = stderr.read(); +// await cli([ +// 'node', 'test', +// '-i', 'examples/images/test.png', +// '-s', 'invalidStep', +// ]); +// err.restore(); +// t.equal(err.output, 'Please ensure all steps are valid.'); +}); diff --git a/test/cli/util/readConsole.js b/test/cli/util/readConsole.js new file mode 100644 index 0000000000..ca8e62b731 --- /dev/null +++ b/test/cli/util/readConsole.js @@ -0,0 +1,26 @@ +function ReadLog(stream) { + this._stream = stream; +} + +ReadLog.prototype.read = function(options) { + + let output = ''; + let stream = this._stream; + + let originalStreamWrite = stream.write; + stream.write = function(string) { + output += string; + }; + + return { + output: function () { + return output; + }, + restore: function() { + stream.write = originalStreamWrite; + } + }; +}; + +exports.stdout = new ReadLog(process.stdout); +exports.stderr = new ReadLog(process.stderr); \ No newline at end of file