Skip to content

Commit a289707

Browse files
committed
Add test that config settings are passed to editable builds
1 parent e57cf4f commit a289707

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

tests/functional/test_pep660.py

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
3737
3838
def 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
5656
def 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+
91101
def _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

Comments
 (0)