mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
Make all tests pass
This commit is contained in:
parent
c961c900d6
commit
2c3f55e5bd
@ -173,10 +173,10 @@ Client.prototype.connect = function(callback) {
|
||||
var activeQuery = self.activeQuery;
|
||||
self.activeQuery = null;
|
||||
self.readyForQuery = true;
|
||||
self._pulseQueryQueue();
|
||||
if(activeQuery) {
|
||||
activeQuery.handleReadyForQuery(con);
|
||||
}
|
||||
self._pulseQueryQueue();
|
||||
});
|
||||
|
||||
con.on('error', function(error) {
|
||||
@ -390,6 +390,12 @@ Client.prototype.query = function(config, values, callback) {
|
||||
|
||||
Client.prototype.end = function(cb) {
|
||||
this._ending = true;
|
||||
if (this.activeQuery) {
|
||||
// if we have an active query we need to force a disconnect
|
||||
// on the socket - otherwise a hung query could block end forever
|
||||
this.connection.stream.destroy(new Error('Connection terminated by user'))
|
||||
return;
|
||||
}
|
||||
if (cb) {
|
||||
this.connection.end();
|
||||
this.connection.once('end', cb);
|
||||
|
||||
@ -16,29 +16,26 @@ var createErorrClient = function() {
|
||||
|
||||
const suite = new helper.Suite('error handling')
|
||||
|
||||
suite.test('query receives error on client shutdown', false, function(done) {
|
||||
suite.test('query receives error on client shutdown', function(done) {
|
||||
var client = new Client();
|
||||
client.connect(assert.success(function() {
|
||||
const config = {
|
||||
text: 'select pg_sleep(5)',
|
||||
name: 'foobar'
|
||||
}
|
||||
let queryError;
|
||||
client.query(new pg.Query(config), assert.calls(function(err, res) {
|
||||
assert(err instanceof Error)
|
||||
done()
|
||||
queryError = err
|
||||
}));
|
||||
setTimeout(() => {
|
||||
client.end()
|
||||
assert.emits(client, 'end');
|
||||
}, 50)
|
||||
setTimeout(() => client.end(), 50)
|
||||
client.once('end', () => {
|
||||
assert(queryError instanceof Error)
|
||||
done()
|
||||
})
|
||||
}));
|
||||
});
|
||||
|
||||
;(function () {
|
||||
var client = createErorrClient();
|
||||
|
||||
var q = client.query({ text: "CREATE TEMP TABLE boom(age integer); INSERT INTO boom (age) VALUES (28);", binary: false });
|
||||
|
||||
var ensureFuture = function (testClient, done) {
|
||||
var goodQuery = testClient.query(new pg.Query("select age from boom"));
|
||||
assert.emits(goodQuery, 'row', function (row) {
|
||||
@ -48,6 +45,10 @@ suite.test('query receives error on client shutdown', false, function(done) {
|
||||
};
|
||||
|
||||
suite.test("when query is parsing", (done) => {
|
||||
var client = createErorrClient();
|
||||
|
||||
var q = client.query({ text: "CREATE TEMP TABLE boom(age integer); INSERT INTO boom (age) VALUES (28);" });
|
||||
|
||||
|
||||
//this query wont parse since there isn't a table named bang
|
||||
var query = client.query(new pg.Query({
|
||||
@ -61,6 +62,10 @@ suite.test('query receives error on client shutdown', false, function(done) {
|
||||
});
|
||||
|
||||
suite.test("when a query is binding", function (done) {
|
||||
var client = createErorrClient();
|
||||
|
||||
var q = client.query({ text: "CREATE TEMP TABLE boom(age integer); INSERT INTO boom (age) VALUES (28);" });
|
||||
|
||||
|
||||
var query = client.query(new pg.Query({
|
||||
text: 'select * from boom where age = $1',
|
||||
@ -72,7 +77,6 @@ suite.test('query receives error on client shutdown', false, function(done) {
|
||||
ensureFuture(client, done);
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
||||
suite.test('non-query error with callback', function(done) {
|
||||
var client = new Client({
|
||||
@ -101,7 +105,7 @@ suite.test('non-error calls supplied callback', function(done) {
|
||||
|
||||
suite.test('when connecting to an invalid host with callback', function (done) {
|
||||
var client = new Client({
|
||||
host: '!#%!@#%'
|
||||
user: 'very invalid username',
|
||||
});
|
||||
client.connect(function(error, client) {
|
||||
assert(error instanceof Error);
|
||||
@ -111,7 +115,7 @@ suite.test('when connecting to an invalid host with callback', function (done) {
|
||||
|
||||
suite.test('when connecting to invalid host with promise', function(done) {
|
||||
var client = new Client({
|
||||
host: 'asdlfkjasldkfjlaskdfj'
|
||||
user: 'very invalid username'
|
||||
});
|
||||
client.connect().catch((e) => done());
|
||||
});
|
||||
|
||||
@ -16,13 +16,12 @@ pg.connect(helper.config, assert.success(function(client, done) {
|
||||
client.query('ALKJSDF')
|
||||
.catch(function(e) {
|
||||
assert(e instanceof Error)
|
||||
client.query('SELECT 1 as num')
|
||||
.then(function (result) {
|
||||
assert.equal(result.rows[0].num, 1)
|
||||
done()
|
||||
pg.end()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
client.query('SELECT 1 as num')
|
||||
.then(function(result) {
|
||||
assert.equal(result.rows[0].num, 1)
|
||||
done()
|
||||
pg.end()
|
||||
})
|
||||
}))
|
||||
|
||||
@ -5,7 +5,7 @@ var Query = helper.pg.Query;
|
||||
test('error during query execution', function() {
|
||||
var client = new Client(helper.args);
|
||||
client.connect(assert.success(function() {
|
||||
var queryText = 'select pg_sleep(5)'
|
||||
var queryText = 'select pg_sleep(10)'
|
||||
var sleepQuery = new Query(queryText);
|
||||
var pidColName = 'procpid'
|
||||
var queryColName = 'current_query';
|
||||
|
||||
@ -15,7 +15,9 @@ helper.pg.connect(helper.config, function (err, client, done) {
|
||||
var stream = client.query(copyFrom("COPY employee FROM STDIN"));
|
||||
stream.on('end', function () {
|
||||
done();
|
||||
helper.pg.end();
|
||||
setTimeout(() => {
|
||||
helper.pg.end();
|
||||
}, 50)
|
||||
});
|
||||
|
||||
for (var i = 1; i <= 5; i++) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user