import platform from inspect import cleandoc import jaraco.path import pytest pytestmark = pytest.mark.integration # For the sake of simplicity this test uses fixtures defined in # `setuptools.test.fixtures`, # and it also exercise conditions considered deprecated... # So if needed this test can be deleted. @pytest.mark.skipif( platform.system() != "Linux", reason="only demonstrated to fail on Linux in #4399", ) def test_interop_pkg_resources_iter_entry_points(tmp_path, venv): """ Importing pkg_resources.iter_entry_points on console_scripts seems to cause trouble with zope-interface, when deprecates installation method is used. See #4399. """ project = { "pkg": { "foo.py": cleandoc( """ from pkg_resources import iter_entry_points def bar(): print("Print me if you can") """ ), "setup.py": cleandoc( """ from setuptools import setup, find_packages setup( install_requires=["zope-interface==6.4.post2"], entry_points={ "console_scripts": [ "foo=foo:bar", ], }, ) """ ), } } jaraco.path.build(project, prefix=tmp_path) cmd = ["pip", "install", "-e", ".", "--no-use-pep517"] venv.run(cmd, cwd=tmp_path / "pkg") # Needs this version of pkg_resources installed out = venv.run(["foo"]) assert "Print me if you can" in out