Skip to content

Commit c961c90

Browse files
committed
Almost all tests passing
1 parent 3219db9 commit c961c90

File tree

6 files changed

+47
-60
lines changed

6 files changed

+47
-60
lines changed

lib/native/client.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ Client.prototype.connect = function(cb) {
6363
return self.emit('error', err);
6464
};
6565

66+
var result
67+
if (!cb) {
68+
var resolve, reject
69+
cb = (err) => err ? reject(err) : resolve()
70+
result = new global.Promise(function(res, rej) {
71+
resolve = res
72+
reject = rej
73+
})
74+
}
75+
6676
this.connectionParameters.getLibpqConnectionString(function(err, conString) {
6777
if(err) return onError(err);
6878
self.native.connect(conString, function(err) {
@@ -95,6 +105,8 @@ Client.prototype.connect = function(cb) {
95105
if(cb) cb();
96106
});
97107
});
108+
109+
return result
98110
};
99111

100112
//send a query to the server
@@ -135,6 +147,15 @@ Client.prototype.end = function(cb) {
135147
if(!this._connected) {
136148
this.once('connect', this.end.bind(this, cb));
137149
}
150+
var result;
151+
if (!cb) {
152+
var resolve, reject
153+
cb = (err) => err ? reject(err) : resolve()
154+
result = new global.Promise(function(res, rej) {
155+
resolve = res
156+
reject = rej
157+
})
158+
}
138159
this.native.end(function() {
139160
//send an error to the active query
140161
if(self._hasActiveQuery()) {
@@ -145,6 +166,7 @@ Client.prototype.end = function(cb) {
145166
self.emit('end');
146167
if(cb) cb();
147168
});
169+
return result
148170
};
149171

150172
Client.prototype._hasActiveQuery = function() {

test/integration/client/error-handling-tests.js

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,24 @@ var createErorrClient = function() {
1616

1717
const suite = new helper.Suite('error handling')
1818

19+
suite.test('query receives error on client shutdown', false, function(done) {
20+
var client = new Client();
21+
client.connect(assert.success(function() {
22+
const config = {
23+
text: 'select pg_sleep(5)',
24+
name: 'foobar'
25+
}
26+
client.query(new pg.Query(config), assert.calls(function(err, res) {
27+
assert(err instanceof Error)
28+
done()
29+
}));
30+
setTimeout(() => {
31+
client.end()
32+
assert.emits(client, 'end');
33+
}, 50)
34+
}));
35+
});
36+
1937
;(function () {
2038
var client = createErorrClient();
2139

@@ -83,7 +101,7 @@ suite.test('non-error calls supplied callback', function(done) {
83101

84102
suite.test('when connecting to an invalid host with callback', function (done) {
85103
var client = new Client({
86-
host: 'asldkfjasdf!!#1308140.com'
104+
host: '!#%!@#%'
87105
});
88106
client.connect(function(error, client) {
89107
assert(error instanceof Error);
@@ -109,24 +127,6 @@ suite.test('non-query error', function(done) {
109127
})
110128
});
111129

112-
113-
suite.test('query receives error on client shutdown', false, function(done) {
114-
var client = new Client();
115-
client.connect(function(err) {
116-
if (err) {
117-
return done(err)
118-
}
119-
client.query('SELECT pg_sleep(5)', assert.calls(function(err, res) {
120-
assert(err instanceof Error)
121-
done()
122-
}));
123-
setTimeout(() => {
124-
client.end()
125-
assert.emits(client, 'end');
126-
}, 50)
127-
});
128-
});
129-
130130
suite.test('within a simple query', (done) => {
131131
var client = createErorrClient();
132132

test/integration/client/promise-api-tests.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ suite.test('connected client does not reject promise after connection', (done) =
4040
setTimeout(() => {
4141
client.on('error', (e) => {
4242
assert(e instanceof Error)
43+
client.end()
4344
done()
4445
})
4546
// manually kill the connection
46-
client.connection.stream.end()
47+
client.emit('error', new Error('something bad happened...but not really'))
4748
}, 50)
4849
})
4950
})

test/integration/client/query-error-handling-prepared-statement-tests.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ var util = require('util');
55
var suite = new helper.Suite();
66

77
suite.test('client end during query execution of prepared statement', function(done) {
8-
var client = new Client(helper.args);
8+
var client = new Client();
99
client.connect(assert.success(function() {
1010

1111
var sleepQuery = 'select pg_sleep($1)';
@@ -18,11 +18,11 @@ suite.test('client end during query execution of prepared statement', function(d
1818

1919
var queryInstance = new Query(queryConfig, assert.calls(function (err, result) {
2020
assert.equal(err.message, 'Connection terminated');
21+
done();
2122
}))
2223

2324
var query1 = client.query(queryInstance);
2425

25-
2626
query1.on('error', function (err) {
2727
assert.fail('Prepared statement should not emit error');
2828
});
@@ -35,7 +35,7 @@ suite.test('client end during query execution of prepared statement', function(d
3535
assert.fail('Prepared statement when executed should not return before being killed');
3636
});
3737

38-
client.end(done);
38+
client.end();
3939
}));
4040
});
4141

test/native/connection-tests.js

Lines changed: 0 additions & 36 deletions
This file was deleted.

test/suite.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class Suite {
4545
run(test, cb) {
4646
process.stdout.write(' ' + test.name + ' ')
4747
if (!test.action) {
48-
process.stdout.write('? - SKIPPED')
48+
process.stdout.write('? - SKIPPED\n')
4949
return cb()
5050
}
5151

0 commit comments

Comments
 (0)