From 7d98dce15d8180132faab8dfb0760326c1a07b26 Mon Sep 17 00:00:00 2001 From: TZ Date: Mon, 24 Dec 2018 10:33:38 +0800 Subject: [PATCH 1/2] test: add enquirer --- package.json | 1 + test/fixtures/prompt-enquirer.js | 29 +++++++++++++++++++++++++++++ test/index.test.js | 11 +++++++++++ 3 files changed, 41 insertions(+) create mode 100755 test/fixtures/prompt-enquirer.js diff --git a/package.json b/package.json index 9b7414b..a7a0851 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "autod": "^3.0.1", "egg-bin": "^4.8.1", "egg-ci": "^1.11.0", + "enquirer": "^2.2.0", "eslint": "^5.10.0", "eslint-config-egg": "^7.1.0", "lodash.ismatch": "^4.4.0", diff --git a/test/fixtures/prompt-enquirer.js b/test/fixtures/prompt-enquirer.js new file mode 100755 index 0000000..754b0ff --- /dev/null +++ b/test/fixtures/prompt-enquirer.js @@ -0,0 +1,29 @@ +#!/usr/bin/env node + +'use strict'; + +const { prompt } = require('enquirer'); + +prompt.on('prompt', prompt => { + // console.log(prompt); + process.send && process.send({ type: 'prompt' }); +}); + +async function run() { + const answers = await prompt([ + { + type: 'input', + name: 'name', + message: 'What is your name?', + }, + { + type: 'select', + name: 'color', + message: 'Pick a flavor', + choices: [ 'apple', 'grape', 'watermelon', 'cherry', 'orange' ], + }, + ]); + console.log(answers); +} + +run().catch(console.error); diff --git a/test/index.test.js b/test/index.test.js index d2937f9..b73e35c 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -235,6 +235,17 @@ describe('coffee', () => { .end(done); }); + it.only('should support prompt enquirer', () => { + return coffee.fork(path.join(fixtures, 'prompt-enquirer.js')) + .debug() + .waitForPrompt() + .write('tz\n') + .writeKey('DOWN', 'ENTER') + .expect('stdout', '{ name: \'tz\', color: \'grape\' }') + .expect('code', 0) + .end(); + }); + it('should fork with autoCoverage = true', done => { coffee.fork(path.join(fixtures, 'stdin.js'), null, { autoCoverage: true, From dc7bc2b7f65ad3f4ca3e5590c1cccebc495d881b Mon Sep 17 00:00:00 2001 From: wanghx Date: Mon, 24 Dec 2018 11:21:34 +0800 Subject: [PATCH 2/2] feat: change tty --- test/fixtures/prompt-enquirer.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/fixtures/prompt-enquirer.js b/test/fixtures/prompt-enquirer.js index 754b0ff..cdac7ec 100755 --- a/test/fixtures/prompt-enquirer.js +++ b/test/fixtures/prompt-enquirer.js @@ -3,6 +3,7 @@ 'use strict'; const { prompt } = require('enquirer'); +const { ReadStream } = require('tty'); prompt.on('prompt', prompt => { // console.log(prompt); @@ -10,20 +11,26 @@ prompt.on('prompt', prompt => { }); async function run() { + const stdin = new ReadStream(process.stdin.fd); + process.stdin.pipe(stdin); const answers = await prompt([ { type: 'input', name: 'name', message: 'What is your name?', + stdin, }, { type: 'select', name: 'color', message: 'Pick a flavor', choices: [ 'apple', 'grape', 'watermelon', 'cherry', 'orange' ], + stdin, }, ]); console.log(answers); + stdin.end(); + process.stdin.end(); } run().catch(console.error);