@@ -13,7 +13,7 @@ import {settings} from './settings';
1313
1414const  isWin  =  os . type ( ) . search ( 'Windows' )  >  - 1 ; 
1515
16- let  database ,  pool ; 
16+ let  database ,  pool ,   pgDataDir ; 
1717
1818describe . only ( 'Database;' ,  function  ( )  { 
1919    this . timeout ( 15000 ) ; 
@@ -22,6 +22,10 @@ describe.only('Database;', function () {
2222        try  { 
2323            database  =  new  Database ( settings ) ; 
2424            pool  =  database . pool ; 
25+ 
26+             if  ( isWin )  { 
27+                 pgDataDir  =  await  getPgDataDir ( database ) ; 
28+             } 
2529            done ( ) ; 
2630        }  catch  ( err )  { 
2731            done ( err ) ; 
@@ -30,7 +34,9 @@ describe.only('Database;', function () {
3034
3135    after ( async  done  =>  { 
3236        try  { 
33-             await  startPostgresql ( ) ; 
37+             if  ( pgDataDir )  { 
38+                 await  startPostgresql ( ) ; 
39+             } 
3440            await  database . close ( ) ; 
3541            done ( ) ; 
3642        }  catch  ( err )  { 
@@ -196,6 +202,9 @@ async function getUsers(session: Session, userId: number): Promise<any> {
196202function  execCommand ( command : string ) : Promise < void >  { 
197203    return  new  Promise ( ( resolve ,  reject )  =>  { 
198204        exec ( command ,  ( err ,  stdout ,  stderr )  =>  { 
205+             console . log ( err ) 
206+             console . log ( stderr ) 
207+             console . log ( stdout ) 
199208            const  error  =  err  ||  stderr ; 
200209
201210            error  ? reject ( error )  : resolve ( ) ; 
@@ -205,7 +214,7 @@ function execCommand(command: string): Promise<void> {
205214
206215async  function  startPostgresql ( ) : Promise < void >  { 
207216    const  command  =  isWin 
208-         ? '' 
217+         ? `pg_ctl -D " ${ pgDataDir } " start` 
209218        : 'brew services start postgresql' ; 
210219
211220    await  execCommand ( command ) ; 
@@ -214,9 +223,25 @@ async function startPostgresql(): Promise<void> {
214223
215224async  function  stopPostgresql ( ) : Promise < void >  { 
216225    const  command  =  isWin 
217-         ? '' 
226+         ? `pg_ctl -D " ${ pgDataDir } " stop` 
218227        : 'brew services stop postgresql' ; 
219228
220229    await  execCommand ( command ) ; 
221230    await  wait ( 1000 ) ; 
222231} 
232+ 
233+ async  function  getPgDataDir ( db : Database ) : Promise < string >  { 
234+     const  session  =  await  connectToDatabase ( db ) ; 
235+ 
236+     const  query  =  { 
237+         text : `SHOW data_directory` , 
238+         mask : 'single' 
239+     } ; 
240+ 
241+     const  result  =  await  session . execute ( query ) ; 
242+ 
243+     await  session . close ( ) ; 
244+     await  wait ( settings . pool . idleTimeout  +  500 ) ; 
245+ 
246+     return  result . data_directory ; 
247+ } 
0 commit comments