| 'use strict'; |
| const Path = require('path'); |
| const { createServer } = require('net'); |
| |
| const { test } = require('tap'); |
| |
| const startCLI = require('./start-cli'); |
| |
| test('launch CLI w/o args', (t) => { |
| const cli = startCLI([]); |
| return cli.quit() |
| .then((code) => { |
| t.equal(code, 1, 'exits with non-zero exit code'); |
| t.match(cli.output, /^Usage:/, 'Prints usage info'); |
| }); |
| }); |
| |
| test('launch w/ invalid host:port', (t) => { |
| const cli = startCLI(['localhost:914']); |
| return cli.quit() |
| .then((code) => { |
| t.match( |
| cli.output, |
| 'failed to connect', |
| 'Tells the user that the connection failed'); |
| t.equal(code, 1, 'exits with non-zero exit code'); |
| }); |
| }); |
| |
| test('launch w/ unavailable port', async (t) => { |
| const blocker = createServer((socket) => socket.end()); |
| const port = await new Promise((resolve, reject) => { |
| blocker.on('error', reject); |
| blocker.listen(0, '127.0.0.1', () => resolve(blocker.address().port)); |
| }); |
| |
| try { |
| const script = Path.join('examples', 'three-lines.js'); |
| const cli = startCLI([`--port=${port}`, script]); |
| const code = await cli.quit(); |
| |
| t.notMatch( |
| cli.output, |
| 'report this bug', |
| 'Omits message about reporting this as a bug'); |
| t.match( |
| cli.output, |
| `waiting for 127.0.0.1:${port} to be free`, |
| 'Tells the user that the port wasn\'t available'); |
| t.equal(code, 1, 'exits with non-zero exit code'); |
| } finally { |
| blocker.close(); |
| } |
| }); |