Browse Source

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

PR-URL: https://github.com/nodejs/node/pull/11390
Ref: https://github.com/nodejs/node/issues/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>
v6
Scott McKenzie 8 years ago
committed by James M Snell
parent
commit
7f3f72c19b
  1. 6
      doc/api/errors.md
  2. 2
      lib/internal/errors.js
  3. 18
      lib/readline.js
  4. 3
      test/parallel/test-readline-csi.js
  5. 12
      test/parallel/test-readline-interface.js

6
doc/api/errors.md

@ -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 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 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> <a id="ERR_INVALID_FILE_URL_HOST"></a>
### ERR_INVALID_FILE_URL_HOST ### ERR_INVALID_FILE_URL_HOST

2
lib/internal/errors.js

@ -124,6 +124,8 @@ E('ERR_INDEX_OUT_OF_RANGE', 'Index out of range');
E('ERR_INVALID_ARG_TYPE', invalidArgType); E('ERR_INVALID_ARG_TYPE', invalidArgType);
E('ERR_INVALID_CALLBACK', 'callback must be a function'); E('ERR_INVALID_CALLBACK', 'callback must be a function');
E('ERR_INVALID_FD', (fd) => `"fd" must be a positive integer: ${fd}`); 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_HOST', 'File URL host %s');
E('ERR_INVALID_FILE_URL_PATH', 'File URL path %s'); E('ERR_INVALID_FILE_URL_PATH', 'File URL path %s');
E('ERR_INVALID_HANDLE_TYPE', 'This handle type cannot be sent'); E('ERR_INVALID_HANDLE_TYPE', 'This handle type cannot be sent');

18
lib/readline.js

@ -27,6 +27,7 @@
'use strict'; 'use strict';
const errors = require('internal/errors');
const { debug, inherits } = require('util'); const { debug, inherits } = require('util');
const Buffer = require('buffer').Buffer; const Buffer = require('buffer').Buffer;
const EventEmitter = require('events'); const EventEmitter = require('events');
@ -95,7 +96,7 @@ function Interface(input, output, completer, terminal) {
} }
if (completer && typeof completer !== 'function') { 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) { if (historySize === undefined) {
@ -105,7 +106,11 @@ function Interface(input, output, completer, terminal) {
if (typeof historySize !== 'number' || if (typeof historySize !== 'number' ||
isNaN(historySize) || isNaN(historySize) ||
historySize < 0) { 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 // 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) { Interface.prototype._writeToOutput = function _writeToOutput(stringToWrite) {
if (typeof stringToWrite !== 'string') 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) if (this.output !== null && this.output !== undefined)
this.output.write(stringToWrite); this.output.write(stringToWrite);
@ -1053,7 +1063,7 @@ function cursorTo(stream, x, y) {
return; return;
if (typeof x !== 'number') 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') { if (typeof y !== 'number') {
stream.write(CSI`${x + 1}G`); stream.write(CSI`${x + 1}G`);

3
test/parallel/test-readline-csi.js

@ -77,7 +77,8 @@ assert.throws(
() => readline.cursorTo(writable, 'a', 1), () => readline.cursorTo(writable, 'a', 1),
common.expectsError({ common.expectsError({
type: Error, 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, ''); assert.strictEqual(writable.data, '');

12
test/parallel/test-readline-interface.js

@ -315,14 +315,10 @@ function isWarned(emitter) {
input: fi, input: fi,
completer: 'string is not valid' completer: 'string is not valid'
}); });
}, function(err) { }, common.expectsError({
if (err instanceof TypeError) { type: TypeError,
if (/Argument "completer" must be a function/.test(err)) { code: 'ERR_INVALID_OPT_VALUE'
return true; }));
}
}
return false;
});
// duplicate lines are removed from history when // duplicate lines are removed from history when
// `options.removeHistoryDuplicates` is `true` // `options.removeHistoryDuplicates` is `true`

Loading…
Cancel
Save