@@ -85,3 +85,35 @@ def test_container_startup_cannot_override_gcp_test_environment(
8585 "NVTE_FLASH_ATTN_V3" : "0" ,
8686 "NVTE_FLASH_ATTN_V4" : "0" ,
8787 }
88+
89+
90+ @pytest .mark .parametrize ("mount_fs" , [True , False ])
91+ def test_mounted_cache_uses_container_local_config_locks (tmp_path : Path , mount_fs : bool ) -> None :
92+ action = yaml .safe_load (ACTION .read_text ())
93+ start = next (step ["run" ] for step in action ["runs" ]["steps" ] if step .get ("name" ) == "Start container" )
94+ expressions = {
95+ "inputs.test-data-path" : "/shared/test-data" ,
96+ "github.run_id" : "123" ,
97+ "inputs.runner" : "nemo-ci-gcp-gpu-x2" ,
98+ "inputs.shard-id" : "" ,
99+ "inputs.num-shards" : "" ,
100+ "inputs.container-image" : "test-image" ,
101+ "inputs.timeout" : "1" ,
102+ }
103+ start = re .sub (r"\$\{\{\s*(.*?)\s*\}\}" , lambda match : expressions [match [1 ]], start )
104+ docker = tmp_path / "docker"
105+ docker .write_text ('#!/bin/sh\n [ "$1" != run ] || printf "%s\\ n" "$@" > docker-args\n ' )
106+ docker .chmod (0o755 )
107+ env = {** os .environ , "PATH" : f"{ tmp_path } :{ os .environ ['PATH' ]} " , "MOUNT_FS" : str (mount_fs ).lower ()}
108+ subprocess .run (["bash" , "-c" , start ], cwd = tmp_path , env = env , check = True , capture_output = True , text = True )
109+ args = (tmp_path / "docker-args" ).read_text ().splitlines ()
110+ container_env = dict (args [i + 1 ].split ("=" , 1 ) for i , arg in enumerate (args ) if arg == "--env" )
111+ if mount_fs :
112+ assert container_env ["HF_HOME" ] == "/home/TestData/HF_HOME"
113+ assert container_env ["HF_HUB_OFFLINE" ] == "1"
114+ assert container_env ["MEGATRON_CONFIG_LOCK_DIR" ] == "/home/ubuntu/.cache/huggingface"
115+ assert args [args .index ("--volume" ) + 1 ] == "/shared/test-data:/home/TestData"
116+ else :
117+ assert "MEGATRON_CONFIG_LOCK_DIR" not in container_env
118+ assert "HF_HUB_OFFLINE" not in container_env
119+ assert "--volume" not in args
0 commit comments