@@ -37,7 +37,7 @@ def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
3737
3838def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
3939 with open("log.txt", "a") as f:
40- print(":build_wheel called", file=f)
40+ print(f ":build_wheel called with config_settings={config_settings} ", file=f)
4141 return _build_wheel(wheel_directory, config_settings, metadata_directory)
4242"""
4343
@@ -55,7 +55,7 @@ def prepare_metadata_for_build_editable(metadata_directory, config_settings=None
5555
5656def build_editable(wheel_directory, config_settings=None, metadata_directory=None):
5757 with open("log.txt", "a") as f:
58- print(":build_editable called", file=f)
58+ print(f ":build_editable called with config_settings={config_settings} ", file=f)
5959 return _build_wheel(wheel_directory, config_settings, metadata_directory)
6060"""
6161# fmt: on
@@ -88,6 +88,16 @@ def _assert_hook_called(project_dir: Path, hook: str) -> None:
8888 assert f":{ hook } called" in log , f"{ hook } has not been called"
8989
9090
91+ def _assert_hook_called_with_config_settings (
92+ project_dir : Path , hook : str , config_settings : Dict [str , str ]
93+ ) -> None :
94+ log = project_dir .joinpath ("log.txt" ).read_text ()
95+ assert f":{ hook } called" in log , f"{ hook } has not been called"
96+ assert (
97+ f":{ hook } called with config_settings={ config_settings } " in log
98+ ), f"{ hook } has not been called with the expected config settings:\n { log } "
99+
100+
91101def _assert_hook_not_called (project_dir : Path , hook : str ) -> None :
92102 log = project_dir .joinpath ("log.txt" ).read_text ()
93103 assert f":{ hook } called" not in log , f"{ hook } should not have been called"
@@ -119,9 +129,35 @@ def test_install_pep660_basic(tmpdir: Path, script: PipTestEnvironment) -> None:
119129 "--no-build-isolation" ,
120130 "--editable" ,
121131 project_dir ,
132+ "--config-setting" ,
133+ "x=y" ,
134+ )
135+ _assert_hook_called (project_dir , "prepare_metadata_for_build_editable" )
136+ _assert_hook_called_with_config_settings (project_dir , "build_editable" , {"x" : "y" })
137+ assert (
138+ result .test_env .site_packages .joinpath ("project.egg-link" )
139+ not in result .files_created
140+ ), "a .egg-link file should not have been created"
141+
142+
143+ def test_install_pep660_from_reqs_file (
144+ tmpdir : Path , script : PipTestEnvironment
145+ ) -> None :
146+ """
147+ Test with backend that supports build_editable.
148+ """
149+ project_dir = _make_project (tmpdir , BACKEND_WITH_PEP660 , with_setup_py = False )
150+ reqs_file = tmpdir / "requirements.txt"
151+ reqs_file .write_text (f"-e { project_dir .as_uri ()} --config-setting x=y\n " )
152+ result = script .pip (
153+ "install" ,
154+ "--no-index" ,
155+ "--no-build-isolation" ,
156+ "-r" ,
157+ reqs_file ,
122158 )
123159 _assert_hook_called (project_dir , "prepare_metadata_for_build_editable" )
124- _assert_hook_called (project_dir , "build_editable" )
160+ _assert_hook_called_with_config_settings (project_dir , "build_editable" , { "x" : "y" } )
125161 assert (
126162 result .test_env .site_packages .joinpath ("project.egg-link" )
127163 not in result .files_created
0 commit comments