3030 LocalDirectoryImageProvider ,
3131 LocalScheduler ,
3232 ReplicaParam ,
33- create_cwd_scheduler ,
3433 _join_PATH ,
34+ create_cwd_scheduler ,
3535 make_unique ,
3636)
37- from torchx .specs .api import AppDef , AppState , Role , is_terminal , macros , Resource
37+ from torchx .specs .api import AppDef , AppState , Resource , Role , is_terminal , macros
3838
3939from .test_util import write_shell_script
4040
@@ -336,24 +336,29 @@ def test_submit_inherit_parent_envs(self) -> None:
336336 os .environ , {"PATH" : "/bin:/usr/bin" , "TORCHELASTIC_ERROR_FILE" : "ignored" }
337337 )
338338 def test_child_process_env_append_cwd (self , popen_mock : MagicMock ) -> None :
339- ignored = 0
340- self .scheduler ._popen (
341- role_name = "ignored" ,
342- replica_id = ignored ,
343- replica_params = ReplicaParam (
344- args = ["a" , "b" ],
345- env = {},
346- cwd = "/home/bob" ,
347- stdout = None ,
348- stderr = None ,
349- combined = None ,
339+ popen_request = self .scheduler ._to_popen_request (
340+ app = AppDef (
341+ name = "_" ,
342+ roles = [
343+ Role (name = "foo" , image = self .test_dir , env = {"PATH" : "/home/bob" }),
344+ ],
350345 ),
351- prepend_cwd = False ,
346+ cfg = {"prepend_cwd" : False },
347+ )
348+
349+ # the test scheduler is hooked up with LocalDirectoryImageProvider
350+ # which treats the role's image as CWD
351+ replica_params = popen_request .role_params ["foo" ][0 ]
352+ self .assertEqual (f"/home/bob:{ self .test_dir } " , replica_params .env ["PATH" ])
353+
354+ # _popen actually adds in the os.environ[PATH]
355+ self .scheduler ._popen (
356+ role_name = "foo" , replica_id = 0 , replica_params = replica_params
352357 )
353358
354359 self .assertEqual (
355360 # for python 3.7 BC get call_args.kwargs by index
356- "/bin:/usr/ bin:/home/bob " ,
361+ f"/home/bob: { self . test_dir } :/ bin:/usr/bin " ,
357362 popen_mock .call_args [1 ]["env" ]["PATH" ],
358363 )
359364
@@ -362,61 +367,58 @@ def test_child_process_env_append_cwd(self, popen_mock: MagicMock) -> None:
362367 os .environ , {"PATH" : "/bin:/usr/bin" , "TORCHELASTIC_ERROR_FILE" : "ignored" }
363368 )
364369 def test_child_process_env_prepend_cwd (self , popen_mock : MagicMock ) -> None :
365- ignored = 0
366- self .scheduler ._popen (
367- role_name = "ignored" ,
368- replica_id = ignored ,
369- replica_params = ReplicaParam (
370- args = ["a" , "b" ],
371- env = {},
372- cwd = "/home/bob" ,
373- stdout = None ,
374- stderr = None ,
375- combined = None ,
370+ popen_request = self .scheduler ._to_popen_request (
371+ app = AppDef (
372+ name = "_" ,
373+ roles = [
374+ Role (name = "foo" , image = self .test_dir , env = {"PATH" : "/home/bob" }),
375+ ],
376376 ),
377- prepend_cwd = True ,
377+ cfg = {"prepend_cwd" : True },
378+ )
379+
380+ # the test scheduler is hooked up with LocalDirectoryImageProvider
381+ # which treats the role's image as CWD
382+ replica_params = popen_request .role_params ["foo" ][0 ]
383+ self .assertEqual (f"{ self .test_dir } :/home/bob" , replica_params .env ["PATH" ])
384+
385+ # _popen actually adds in the os.environ[PATH]
386+ self .scheduler ._popen (
387+ role_name = "foo" , replica_id = 0 , replica_params = replica_params
378388 )
379389
380390 self .assertEqual (
381391 # for python 3.7 BC get call_args.kwargs by index
382- " /home/bob:/bin:/usr/bin" ,
392+ f" { self . test_dir } : /home/bob:/bin:/usr/bin" ,
383393 popen_mock .call_args [1 ]["env" ]["PATH" ],
384394 )
385395
386396 @mock .patch ("subprocess.Popen" )
387397 @mock .patch .dict (os .environ , {"TORCHELASTIC_ERROR_FILE" : "ignored" }, clear = True )
388398 def test_child_process_env_none (self , popen_mock : MagicMock ) -> None :
389- ignored = 0
390- self .scheduler ._popen (
391- role_name = "ignored" ,
392- replica_id = ignored ,
393- replica_params = ReplicaParam (
394- args = ["a" , "b" ],
395- env = {},
396- cwd = "/home/bob" ,
397- stdout = None ,
398- stderr = None ,
399- combined = None ,
399+ popen_request = self .scheduler ._to_popen_request (
400+ app = AppDef (
401+ name = "_" ,
402+ roles = [Role (name = "foo" , image = self .test_dir )],
400403 ),
401- prepend_cwd = True ,
404+ cfg = {} ,
402405 )
403- self .assertEqual ("/home/bob" , popen_mock .call_args [1 ]["env" ]["PATH" ])
404406
407+ # the test scheduler is hooked up with LocalDirectoryImageProvider
408+ # which treats the role's image as CWD
409+ replica_params = popen_request .role_params ["foo" ][0 ]
410+ self .assertEqual (f"{ self .test_dir } " , replica_params .env ["PATH" ])
411+
412+ # _popen actually adds in the os.environ[PATH]
405413 self .scheduler ._popen (
406- role_name = "ignored" ,
407- replica_id = ignored ,
408- replica_params = ReplicaParam (
409- args = ["a" , "b" ],
410- env = {},
411- cwd = None ,
412- stdout = None ,
413- stderr = None ,
414- combined = None ,
415- ),
416- prepend_cwd = True ,
414+ role_name = "foo" , replica_id = 0 , replica_params = replica_params
415+ )
416+
417+ self .assertEqual (
418+ # for python 3.7 BC get call_args.kwargs by index
419+ f"{ self .test_dir } " ,
420+ popen_mock .call_args [1 ]["env" ]["PATH" ],
417421 )
418- # for python 3.7 BC get call_args.kwargs by index
419- self .assertFalse (popen_mock .call_args [1 ]["env" ]["PATH" ])
420422
421423 @mock .patch .dict (os .environ , {"FOO" : "bar" })
422424 def test_submit_override_parent_env (self ) -> None :
0 commit comments