fix
This commit is contained in:
4
book/node_modules/error/test/index.js
generated
vendored
Normal file
4
book/node_modules/error/test/index.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
|
||||
require('./typed.js');
|
||||
require('./wrapped.js');
|
||||
45
book/node_modules/error/test/typed.js
generated
vendored
Normal file
45
book/node_modules/error/test/typed.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
var test = require('tape');
|
||||
|
||||
var TypedError = require('../typed.js');
|
||||
|
||||
test('a server error', function t(assert) {
|
||||
var ServerError = TypedError({
|
||||
type: 'server.5xx.error',
|
||||
message: '{title} server error, status={statusCode}'
|
||||
});
|
||||
|
||||
var error = ServerError({
|
||||
title: 'some title',
|
||||
statusCode: 500
|
||||
});
|
||||
|
||||
assert.equal(ServerError.type, 'server.5xx.error');
|
||||
|
||||
assert.equal(error.type, 'server.5xx.error');
|
||||
assert.equal(error.fullType, 'server.5xx.error');
|
||||
assert.equal(error.statusCode, 500);
|
||||
assert.equal(error.message, 'some title server error, status=500');
|
||||
|
||||
assert.end();
|
||||
});
|
||||
|
||||
test('a client error', function t(assert) {
|
||||
var ClientError = TypedError({
|
||||
type: 'client.4xx.error',
|
||||
message: '{title} client error, status={statusCode}'
|
||||
});
|
||||
|
||||
var error2 = ClientError({
|
||||
title: 'some title',
|
||||
statusCode: 404
|
||||
});
|
||||
|
||||
assert.equal(error2.type, 'client.4xx.error');
|
||||
assert.equal(error2.fullType, 'client.4xx.error');
|
||||
assert.equal(error2.statusCode, 404);
|
||||
assert.equal(error2.message, 'some title client error, status=404');
|
||||
|
||||
assert.end();
|
||||
});
|
||||
182
book/node_modules/error/test/wrapped.js
generated
vendored
Normal file
182
book/node_modules/error/test/wrapped.js
generated
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
'use strict';
|
||||
|
||||
var test = require('tape');
|
||||
var net = require('net');
|
||||
|
||||
var WrappedError = require('../wrapped.js');
|
||||
|
||||
test('can create a wrapped error', function t(assert) {
|
||||
var ServerListenError = WrappedError({
|
||||
message: 'server: {causeMessage}',
|
||||
type: 'server.listen-failed',
|
||||
requestedPort: null,
|
||||
host: null
|
||||
});
|
||||
|
||||
var err = new Error('listen EADDRINUSE');
|
||||
err.code = 'EADDRINUSE';
|
||||
|
||||
var err2 = ServerListenError(err, {
|
||||
requestedPort: 3426,
|
||||
host: 'localhost'
|
||||
});
|
||||
|
||||
assert.equal(ServerListenError.type, 'server.listen-failed');
|
||||
|
||||
assert.equal(err2.message, 'server: listen EADDRINUSE');
|
||||
assert.equal(err2.requestedPort, 3426);
|
||||
assert.equal(err2.host, 'localhost');
|
||||
assert.equal(err2.code, 'EADDRINUSE');
|
||||
|
||||
assert.equal(err2.cause, err);
|
||||
|
||||
assert.equal(err2.toString(),
|
||||
'ServerListenFailedError: server: listen EADDRINUSE');
|
||||
|
||||
assert.equal(JSON.stringify(err2), JSON.stringify({
|
||||
type: 'server.listen-failed',
|
||||
message: 'server: listen EADDRINUSE',
|
||||
requestedPort: 3426,
|
||||
host: 'localhost',
|
||||
name: 'ServerListenFailedError',
|
||||
causeMessage: 'listen EADDRINUSE',
|
||||
origMessage: 'listen EADDRINUSE',
|
||||
code: 'EADDRINUSE',
|
||||
fullType: 'server.listen-failed~!~error.wrapped-unknown'
|
||||
}));
|
||||
|
||||
assert.end();
|
||||
});
|
||||
|
||||
test('can create wrapped error with syscall', function t(assert) {
|
||||
var SysCallError = WrappedError({
|
||||
'message': 'tchannel socket error ({code} from ' +
|
||||
'{syscall}): {origMessage}',
|
||||
type: 'syscall.error'
|
||||
});
|
||||
|
||||
var err = new Error('listen EADDRINUSE');
|
||||
err.code = 'EADDRINUSE';
|
||||
err.syscall = 'listen';
|
||||
|
||||
var err2 = SysCallError(err);
|
||||
|
||||
assert.equal(err2.message, 'tchannel socket error ' +
|
||||
'(EADDRINUSE from listen): listen EADDRINUSE');
|
||||
assert.equal(err2.syscall, 'listen');
|
||||
assert.equal(err2.code, 'EADDRINUSE');
|
||||
assert.equal(err2.type, 'syscall.error');
|
||||
|
||||
assert.end();
|
||||
});
|
||||
|
||||
test('wrapping twice', function t(assert) {
|
||||
var ReadError = WrappedError({
|
||||
type: 'my.read-error',
|
||||
message: 'read: {causeMessage}'
|
||||
});
|
||||
|
||||
var DatabaseError = WrappedError({
|
||||
type: 'my.database-error',
|
||||
message: 'db: {causeMessage}'
|
||||
});
|
||||
|
||||
var BusinessError = WrappedError({
|
||||
type: 'my.business-error',
|
||||
message: 'business: {causeMessage}'
|
||||
});
|
||||
|
||||
var err = BusinessError(
|
||||
DatabaseError(
|
||||
ReadError(
|
||||
new Error('oops')
|
||||
)
|
||||
)
|
||||
);
|
||||
assert.ok(err);
|
||||
|
||||
assert.equal(err.message, 'business: db: read: oops');
|
||||
assert.equal(err.type, 'my.business-error');
|
||||
assert.equal(err.fullType, 'my.business-error~!~' +
|
||||
'my.database-error~!~' +
|
||||
'my.read-error~!~' +
|
||||
'error.wrapped-unknown');
|
||||
|
||||
assert.end();
|
||||
});
|
||||
|
||||
test('handles bad recursive strings', function t(assert) {
|
||||
var ReadError = WrappedError({
|
||||
type: 'wat.wat',
|
||||
message: 'read: {causeMessage}'
|
||||
});
|
||||
|
||||
var err2 = ReadError(new Error('hi {causeMessage}'));
|
||||
|
||||
assert.ok(err2);
|
||||
assert.equal(err2.message,
|
||||
'read: hi $INVALID_CAUSE_MESSAGE_LITERAL');
|
||||
|
||||
assert.end();
|
||||
});
|
||||
|
||||
test('can wrap real IO errors', function t(assert) {
|
||||
var ServerListenError = WrappedError({
|
||||
message: 'server: {causeMessage}',
|
||||
type: 'server.listen-failed',
|
||||
requestedPort: null,
|
||||
host: null
|
||||
});
|
||||
|
||||
var otherServer = net.createServer();
|
||||
otherServer.once('listening', onPortAllocated);
|
||||
otherServer.listen(0);
|
||||
|
||||
function onPortAllocated() {
|
||||
var port = otherServer.address().port;
|
||||
|
||||
var server = net.createServer();
|
||||
server.on('error', onError);
|
||||
|
||||
server.listen(port);
|
||||
|
||||
function onError(cause) {
|
||||
var err = ServerListenError(cause, {
|
||||
host: 'localhost',
|
||||
requestedPort: port
|
||||
});
|
||||
|
||||
otherServer.close();
|
||||
assertOnError(err, cause, port);
|
||||
}
|
||||
}
|
||||
|
||||
function assertOnError(err, cause, port) {
|
||||
assert.equal(err.message, 'server: listen EADDRINUSE');
|
||||
assert.equal(err.requestedPort, port);
|
||||
assert.equal(err.host, 'localhost');
|
||||
assert.equal(err.code, 'EADDRINUSE');
|
||||
|
||||
assert.equal(err.cause, cause);
|
||||
|
||||
assert.equal(err.toString(),
|
||||
'ServerListenFailedError: server: listen EADDRINUSE');
|
||||
|
||||
assert.equal(JSON.stringify(err), JSON.stringify({
|
||||
type: 'server.listen-failed',
|
||||
message: 'server: listen EADDRINUSE',
|
||||
requestedPort: port,
|
||||
host: 'localhost',
|
||||
name: 'ServerListenFailedError',
|
||||
causeMessage: 'listen EADDRINUSE',
|
||||
origMessage: 'listen EADDRINUSE',
|
||||
code: 'EADDRINUSE',
|
||||
errno: 'EADDRINUSE',
|
||||
syscall: 'listen',
|
||||
fullType: 'server.listen-failed~!~' +
|
||||
'error.wrapped-io.listen.EADDRINUSE'
|
||||
}));
|
||||
|
||||
assert.end();
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user