9191from .utils import \
9292 PgVer , \
9393 eprint , \
94- get_bin_path2 , \
9594 get_pg_version2 , \
9695 execute_utility2 , \
9796 options_string , \
@@ -164,6 +163,7 @@ class PostgresNode(object):
164163
165164 _name : typing .Optional [str ]
166165 _port : typing .Optional [int ]
166+ _bin_dir : str
167167 _should_free_port : bool
168168 _os_ops : OsOperations
169169 _port_manager : typing .Optional [PortManager ]
@@ -173,7 +173,7 @@ def __init__(self,
173173 name = None ,
174174 base_dir = None ,
175175 port : typing .Optional [int ] = None ,
176- bin_dir = None ,
176+ bin_dir : typing . Optional [ str ] = None ,
177177 prefix = None ,
178178 os_ops : typing .Optional [OsOperations ] = None ,
179179 port_manager : typing .Optional [PortManager ] = None ):
@@ -189,6 +189,7 @@ def __init__(self,
189189 port_manager: None or correct port manager object.
190190 """
191191 assert port is None or type (port ) is int
192+ assert bin_dir is None or type (bin_dir ) is str
192193 assert os_ops is None or isinstance (os_ops , OsOperations )
193194 assert port_manager is None or isinstance (port_manager , PortManager )
194195
@@ -203,9 +204,15 @@ def __init__(self,
203204 assert self ._os_ops is not None
204205 assert isinstance (self ._os_ops , OsOperations )
205206
206- self ._pg_version = PgVer (get_pg_version2 (self ._os_ops , bin_dir ))
207+ if bin_dir is not None :
208+ self ._bin_dir = bin_dir
209+ else :
210+ self ._bin_dir = utils .get_bin_dir (self ._os_ops )
211+
212+ assert type (self ._bin_dir ) is str
213+
214+ self ._pg_version = PgVer (get_pg_version2 (self ._os_ops , self ._bin_dir ))
207215 self ._base_dir = base_dir
208- self ._bin_dir = bin_dir
209216 self ._prefix = prefix
210217 self ._logger = None
211218 self ._master = None
@@ -488,9 +495,8 @@ def base_dir(self):
488495 return self ._base_dir
489496
490497 @property
491- def bin_dir (self ):
492- if not self ._bin_dir :
493- self ._bin_dir = os .path .dirname (get_bin_path2 (self ._os_ops , "pg_config" ))
498+ def bin_dir (self ) -> str :
499+ assert type (self ._bin_dir ) is str
494500 return self ._bin_dir
495501
496502 @property
@@ -2168,12 +2174,9 @@ def _free_port(self):
21682174 def _get_bin_path (self , filename ):
21692175 assert self ._os_ops is not None
21702176 assert isinstance (self ._os_ops , OsOperations )
2177+ assert type (self ._bin_dir ) is str
21712178
2172- if self .bin_dir :
2173- bin_path = self ._os_ops .build_path (self .bin_dir , filename )
2174- else :
2175- bin_path = get_bin_path2 (self ._os_ops , filename )
2176- return bin_path
2179+ return self ._os_ops .build_path (self ._bin_dir , filename )
21772180
21782181 @staticmethod
21792182 def _escape_config_value (value ):
0 commit comments