Permalink
Browse files

errors, readline: migrate to use internal/errors.js

PR-URL: #11390
Ref: #11273
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
  • Loading branch information...
slammayjammay authored and jasnell committed Feb 15, 2017
1 parent 224dbb1 commit 7f3f72c19b6a0b23394e32a52c1c34b9d59028a7
Showing with 28 additions and 13 deletions.
  1. +6 −0 doc/api/errors.md
  2. +2 −0 lib/internal/errors.js
  3. +14 −4 lib/readline.js
  4. +2 −1 test/parallel/test-readline-csi.js
  5. +4 −8 test/parallel/test-readline-interface.js
View
@@ -594,6 +594,12 @@ an argument of the wrong type has been passed to a Node.js API.
The `'ERR_INVALID_CALLBACK'` error code is used generically to identify that
a callback function is required and has not been provided to a Node.js API.
<a id="ERR_INVALID_CURSOR_POS"></a>
### ERR_INVALID_CURSOR_POS
The `'ERR_INVALID_CURSOR_POS'` is thrown specifically when a cursor on a given
stream is attempted to move to a specified row without a specified column.
<a id="ERR_INVALID_FILE_URL_HOST"></a>
### ERR_INVALID_FILE_URL_HOST
View
@@ -124,6 +124,8 @@ E('ERR_INDEX_OUT_OF_RANGE', 'Index out of range');
E('ERR_INVALID_ARG_TYPE', invalidArgType);
E('ERR_INVALID_CALLBACK', 'callback must be a function');
E('ERR_INVALID_FD', (fd) => `"fd" must be a positive integer: ${fd}`);
E('ERR_INVALID_CURSOR_POS',
'Cannot set cursor row without setting its column');
E('ERR_INVALID_FILE_URL_HOST', 'File URL host %s');
E('ERR_INVALID_FILE_URL_PATH', 'File URL path %s');
E('ERR_INVALID_HANDLE_TYPE', 'This handle type cannot be sent');
View
@@ -27,6 +27,7 @@
'use strict';
const errors = require('internal/errors');
const { debug, inherits } = require('util');
const Buffer = require('buffer').Buffer;
const EventEmitter = require('events');
@@ -95,7 +96,7 @@ function Interface(input, output, completer, terminal) {
}
if (completer && typeof completer !== 'function') {
throw new TypeError('Argument "completer" must be a function');
throw new errors.TypeError('ERR_INVALID_OPT_VALUE', 'completer', completer);
}
if (historySize === undefined) {
@@ -105,7 +106,11 @@ function Interface(input, output, completer, terminal) {
if (typeof historySize !== 'number' ||
isNaN(historySize) ||
historySize < 0) {
throw new TypeError('Argument "historySize" must be a positive number');
throw new errors.RangeError(
'ERR_INVALID_OPT_VALUE',
'historySize',
historySize
);
}
// backwards compat; check the isTTY prop of the output stream
@@ -281,7 +286,12 @@ Interface.prototype._onLine = function(line) {
Interface.prototype._writeToOutput = function _writeToOutput(stringToWrite) {
if (typeof stringToWrite !== 'string')
throw new TypeError('"stringToWrite" argument must be a string');
throw new errors.TypeError(
'ERR_INVALID_ARG_TYPE',
'stringToWrite',
'string',
stringToWrite
);
if (this.output !== null && this.output !== undefined)
this.output.write(stringToWrite);
@@ -1053,7 +1063,7 @@ function cursorTo(stream, x, y) {
return;
if (typeof x !== 'number')
throw new Error('Can\'t set cursor row without also setting it\'s column');
throw new errors.Error('ERR_INVALID_CURSOR_POS');
if (typeof y !== 'number') {
stream.write(CSI`${x + 1}G`);
@@ -77,7 +77,8 @@ assert.throws(
() => readline.cursorTo(writable, 'a', 1),
common.expectsError({
type: Error,
message: /^Can't set cursor row without also setting it's column$/
code: 'ERR_INVALID_CURSOR_POS',
message: 'Cannot set cursor row without setting its column'
}));
assert.strictEqual(writable.data, '');
@@ -315,14 +315,10 @@ function isWarned(emitter) {
input: fi,
completer: 'string is not valid'
});
}, function(err) {
if (err instanceof TypeError) {
if (/Argument "completer" must be a function/.test(err)) {
return true;
}
}
return false;
});
}, common.expectsError({
type: TypeError,
code: 'ERR_INVALID_OPT_VALUE'
}));
// duplicate lines are removed from history when
// `options.removeHistoryDuplicates` is `true`

0 comments on commit 7f3f72c

Please sign in to comment.