12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // This test covers all event / callback interfaces offered by node-mysql and
- // throws an exception in them. Exception safety means that each of those
- // exceptions can be caught by an 'uncaughtException' / Domain handler without
- // the connection instance ending up in a bad state where it doesn't work
- // properly or doesn't execute the next sequence anymore.
- var common = require('../../common');
- var connection = common.createConnection();
- var assert = require('assert');
- var errors = [];
- process.on('uncaughtException', function(err) {
- console.log(err.stack);
- errors.push(err);
- });
- // Normal callback
- connection.connect(function(err) {
- throw err || new Error('1');
- });
- // Normal callback (same code path as connect, but in here should that
- // implementation detail change at some point).
- connection.query('SELECT 1', function(err) {
- throw err || new Error('2');
- });
- // Row streaming events
- connection.query('SELECT 1')
- .on('fields', function() {
- throw new Error('3');
- })
- .on('result', function() {
- throw new Error('4');
- });
- // Normal callback with error
- connection.query('INVALID SQL', function(err) {
- assert.equal(err.code, 'ER_PARSE_ERROR');
- throw new Error('5');
- });
- // Row streaming 'result' event triggered by Ok Packet (special code path)
- connection.query('USE ' + common.testDatabase)
- .on('result', function() {
- throw new Error('6');
- });
- // Normal callback (same code path as connect, but in here should that
- // implementation detail change at some point).
- connection.end(function(err) {
- throw err || new Error('7');
- });
- process.on('exit', function() {
- process.removeAllListeners();
- var expectedErrors = 7;
- for (var i = 0; i < expectedErrors - 1; i++) {
- var error = errors[i];
- assert.equal(error.message, String(i + 1));
- assert.equal(error.code, undefined);
- }
- });
|