@@ -37,7 +37,7 @@ def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
37
37
38
38
def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
39
39
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)
41
41
return _build_wheel(wheel_directory, config_settings, metadata_directory)
42
42
"""
43
43
@@ -55,7 +55,7 @@ def prepare_metadata_for_build_editable(metadata_directory, config_settings=None
55
55
56
56
def build_editable(wheel_directory, config_settings=None, metadata_directory=None):
57
57
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)
59
59
return _build_wheel(wheel_directory, config_settings, metadata_directory)
60
60
"""
61
61
# fmt: on
@@ -88,6 +88,16 @@ def _assert_hook_called(project_dir: Path, hook: str) -> None:
88
88
assert f":{ hook } called" in log , f"{ hook } has not been called"
89
89
90
90
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
+
91
101
def _assert_hook_not_called (project_dir : Path , hook : str ) -> None :
92
102
log = project_dir .joinpath ("log.txt" ).read_text ()
93
103
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:
119
129
"--no-build-isolation" ,
120
130
"--editable" ,
121
131
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 ,
122
158
)
123
159
_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" } )
125
161
assert (
126
162
result .test_env .site_packages .joinpath ("project.egg-link" )
127
163
not in result .files_created
0 commit comments