@@ -122,9 +122,13 @@ def init(self, **settings):
122122 else :
123123 extra_args = []
124124
125+ os .makedirs (self ._data_dir , exist_ok = True )
125126 process = subprocess .run (
126127 [self ._pg_ctl , 'init' , '-D' , self ._data_dir ] + extra_args ,
127- stdout = subprocess .PIPE , stderr = subprocess .STDOUT )
128+ stdout = subprocess .PIPE ,
129+ stderr = subprocess .STDOUT ,
130+ cwd = self ._data_dir ,
131+ )
128132
129133 output = process .stdout
130134
@@ -199,7 +203,10 @@ def start(self, wait=60, *, server_settings={}, **opts):
199203 process = subprocess .run (
200204 [self ._pg_ctl , 'start' , '-D' , self ._data_dir ,
201205 '-o' , ' ' .join (extra_args )],
202- stdout = stdout , stderr = subprocess .STDOUT )
206+ stdout = stdout ,
207+ stderr = subprocess .STDOUT ,
208+ cwd = self ._data_dir ,
209+ )
203210
204211 if process .returncode != 0 :
205212 if process .stderr :
@@ -218,7 +225,10 @@ def start(self, wait=60, *, server_settings={}, **opts):
218225 self ._daemon_process = \
219226 subprocess .Popen (
220227 [self ._postgres , '-D' , self ._data_dir , * extra_args ],
221- stdout = stdout , stderr = subprocess .STDOUT )
228+ stdout = stdout ,
229+ stderr = subprocess .STDOUT ,
230+ cwd = self ._data_dir ,
231+ )
222232
223233 self ._daemon_pid = self ._daemon_process .pid
224234
@@ -232,7 +242,10 @@ def reload(self):
232242
233243 process = subprocess .run (
234244 [self ._pg_ctl , 'reload' , '-D' , self ._data_dir ],
235- stdout = subprocess .PIPE , stderr = subprocess .PIPE )
245+ stdout = subprocess .PIPE ,
246+ stderr = subprocess .PIPE ,
247+ cwd = self ._data_dir ,
248+ )
236249
237250 stderr = process .stderr
238251
@@ -245,7 +258,10 @@ def stop(self, wait=60):
245258 process = subprocess .run (
246259 [self ._pg_ctl , 'stop' , '-D' , self ._data_dir , '-t' , str (wait ),
247260 '-m' , 'fast' ],
248- stdout = subprocess .PIPE , stderr = subprocess .PIPE )
261+ stdout = subprocess .PIPE ,
262+ stderr = subprocess .PIPE ,
263+ cwd = self ._data_dir ,
264+ )
249265
250266 stderr = process .stderr
251267
@@ -583,9 +599,10 @@ class TempCluster(Cluster):
583599 def __init__ (self , * ,
584600 data_dir_suffix = None , data_dir_prefix = None ,
585601 data_dir_parent = None , pg_config_path = None ):
586- self ._data_dir = tempfile .mkdtemp (suffix = data_dir_suffix ,
587- prefix = data_dir_prefix ,
588- dir = data_dir_parent )
602+ tempdir = tempfile .mkdtemp (suffix = data_dir_suffix ,
603+ prefix = data_dir_prefix ,
604+ dir = data_dir_parent )
605+ self ._data_dir = os .path .join (tempdir , "data" )
589606 super ().__init__ (self ._data_dir , pg_config_path = pg_config_path )
590607
591608
0 commit comments