@@ -380,24 +380,41 @@ def test_image_builder_write_dockerfile(tmp_path):
380380
381381
382382@patch ("docker.from_env" )
383- @pytest .mark .parametrize ("set_env " , [False , True ])
383+ @pytest .mark .parametrize ("env_type " , ["none" , "local" , "http" ])
384384@pytest .mark .parametrize ("skip_build" , [False , True ])
385- def test_image_builder_build_dir (from_env_mock , tmp_path , set_env , skip_build ):
385+ def test_image_builder_build_dir (
386+ from_env_mock ,
387+ tmp_path ,
388+ httpserver ,
389+ env_type ,
390+ skip_build
391+ ):
386392 client_mock = Mock (docker .client .DockerClient )
387393 client_mock .images .build .return_value = None , None
388394 from_env_mock .return_value = client_mock
389395
390396 build_dir = tmp_path / "build"
391- env_path = tmp_path / "env2.yaml"
397+ build_env_path = tmp_path / "env2.yaml"
392398 env_def = {
393399 "name" : "foo" ,
394400 "channels" : "bar" ,
395401 "dependencies" : ["python >=3.13" , "baz >=42.0" ],
396402 }
397- env_path .write_text (yaml .safe_dump (env_def ))
403+ build_env_path .write_text (yaml .safe_dump (env_def ))
404+ env_http = "/env2.yaml"
405+
406+ match env_type :
407+ case "none" : env_param = None
408+ case "local" : env_param = build_env_path
409+ case "http" :
410+ httpserver .expect_request (env_http ).respond_with_data (build_env_path .read_bytes ())
411+ env_param = httpserver .url_for (env_http )
412+ case _:
413+ raise RuntimeError (f"Unknown env type { env_type } " )
414+
398415 image_builder = ImageBuilder (
399416 pathlib .Path (__file__ ).parent / "data" / "noparamtest.ipynb" ,
400- env_path if set_env else None ,
417+ env_param ,
401418 build_dir ,
402419 None ,
403420 )
@@ -406,11 +423,11 @@ def test_image_builder_build_dir(from_env_mock, tmp_path, set_env, skip_build):
406423 from_env_mock .assert_not_called ()
407424 else :
408425 client_mock .images .build .assert_called ()
409- env_path = build_dir / "environment.yml"
410- assert env_path .is_file ()
411- output_env = yaml .safe_load (env_path .read_text ())
426+ build_env_path = build_dir / "environment.yml"
427+ assert build_env_path .is_file ()
428+ output_env = yaml .safe_load (build_env_path .read_text ())
412429 assert {"name" , "channels" , "dependencies" } <= set (output_env )
413- if set_env :
430+ if env_type != "none" :
414431 assert output_env ["name" ] == env_def ["name" ]
415432 assert output_env ["channels" ] == env_def ["channels" ]
416433 assert set (output_env ["dependencies" ]) >= set (env_def ["dependencies" ])
0 commit comments