fix: error out if multiple wheels with the same name are produced

We shouldn't silently overwrite wheels that are produced in the same run that have the same filename, as this implies a misconfiguration.
This commit is contained in:
mayeut
2022-06-26 11:32:33 +02:00
parent 0696c94710
commit ef18186c45
5 changed files with 69 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
import subprocess
from test import test_projects
import pytest
from . import utils
basic_project = test_projects.new_c_project()
basic_project.files[
"repair.py"
] = """
import shutil
import sys
from pathlib import Path
wheel = Path(sys.argv[1])
dest_dir = Path(sys.argv[2])
platform = wheel.stem.split("-")[-1]
name = f"spam-0.1.0-py2-none-{platform}.whl"
dest = dest_dir / name
dest_dir.mkdir(parents=True, exist_ok=True)
if dest.exists():
dest.unlink()
shutil.copy(wheel, dest)
"""
def test(tmp_path, capfd):
# this test checks that a generated wheel name shall be unique in a given cibuildwheel run
project_dir = tmp_path / "project"
basic_project.generate(project_dir)
with pytest.raises(subprocess.CalledProcessError):
utils.cibuildwheel_run(
project_dir,
add_env={
"CIBW_REPAIR_WHEEL_COMMAND": "python repair.py {wheel} {dest_dir}",
},
)
captured = capfd.readouterr()
assert "Build failed because a wheel named" in captured.err