File tree Expand file tree Collapse file tree 2 files changed +36
-5
lines changed
Expand file tree Collapse file tree 2 files changed +36
-5
lines changed Original file line number Diff line number Diff line change @@ -12,11 +12,28 @@ var p = Connection.prototype;
1212
1313var nativeConnect = p . connect ;
1414
15- p . connect = function ( ) {
15+ p . connect = function ( cb ) {
1616 var self = this ;
1717 utils . buildLibpqConnectionString ( this . _config , function ( err , conString ) {
18- if ( err ) return self . emit ( 'error' , err ) ;
18+ if ( err ) {
19+ return cb ? cb ( err ) : self . emit ( 'error' , err ) ;
20+ }
1921 nativeConnect . call ( self , conString ) ;
22+ if ( cb ) {
23+ var errCallback ;
24+ var connectCallback = function ( ) {
25+ //remove single-fire connection error callback
26+ self . removeListener ( 'error' , errCallback ) ;
27+ cb ( null ) ;
28+ }
29+ errCallback = function ( err ) {
30+ //remove singel-fire connection success callback
31+ self . removeListener ( 'connect' , connectCallback ) ;
32+ cb ( err ) ;
33+ }
34+ self . once ( 'connect' , connectCallback ) ;
35+ self . once ( 'error' , errCallback ) ;
36+ }
2037 } )
2138}
2239
Original file line number Diff line number Diff line change @@ -89,15 +89,29 @@ test('error handling', function(){
8989 } ) ;
9090
9191 test ( 'non-query error with callback' , function ( ) {
92-
9392 var client = new Client ( {
9493 user :'asldkfjsadlfkj'
9594 } ) ;
96- client . connect ( function ( error , client ) {
95+ client . connect ( assert . calls ( function ( error , client ) {
9796 assert . ok ( error ) ;
98- } ) ;
97+ } ) ) ;
98+ } ) ;
99+
100+ } ) ;
101+
102+ test ( 'non-error calls supplied callback' , function ( ) {
103+ var client = new Client ( {
104+ user : helper . args . user ,
105+ password : helper . args . password ,
106+ host : helper . args . host ,
107+ port : helper . args . port ,
108+ database : helper . args . database
99109 } ) ;
100110
111+ client . connect ( assert . calls ( function ( err ) {
112+ assert . isNull ( err ) ;
113+ client . end ( ) ;
114+ } ) )
101115} ) ;
102116
103117test ( 'when connecting to invalid host' , function ( ) {
You can’t perform that action at this time.
0 commit comments