from . import test_projects from . import utils pyproject_package_file = """ [tool.poetry] name = "dummy_package" version = "0.1.0" description = "dummy" authors = ["cibuildwheel poetry test"] classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", ] license = "MIT" [tool.poetry.dependencies] python = ">=2.7" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" """ poetry_dummy_project = test_projects.TestProject() poetry_dummy_project.files["dummy_package/__init__.py"] = "" poetry_dummy_project.files["pyproject.toml"] = pyproject_package_file def test_poetry_package(tmp_path): # GIVEN a project that only has pyproject.toml # managed by poetry project_dir = tmp_path / "project" poetry_dummy_project.generate(project_dir) # These are temporary as I understand cibuildwheels # behaviour across different CIs # Poetry is installed during wheels built by pip # however, one of poetry deps require cryptography # which fails to build in outdated pip versions # more info: https://github.com/pyca/cryptography/issues/5101 poetry_project_env = {"CIBW_SKIP": "cp27-* *-win32 *-manylinux_i686 pp*"} # Pip on Windows don't seem to honour installing build system deps # as it happens on Mac/Linux according to CI tests # so we need to install `poetry` before we build the wheels # https://dev.azure.com/joerick0429/cibuildwheel/_build/results?buildId=1315&view=logs&j=fff2fde4-faa2-579c-a2fc-f5ab27662b77&t=ba46a93f-85b8-5ca5-6207-999df763f341&l=396 poetry_project_env["CIBW_BEFORE_BUILD"] = "pip install poetry" # WHEN we attempt to build wheels for multiple platforms # for dummy_package package actual_wheels = utils.cibuildwheel_run(project_dir, add_env=poetry_project_env) # THEN we should have a dummy_package wheel with version 0.1.0 # expected_wheels = utils.expected_wheels("dummy_package", "0.1.0") # Workaround while I await maintainers on correct assertion expected_wheels = {"dummy_package-0.1.0-py2.py3-none-any.whl"} assert set(actual_wheels) == set(expected_wheels)