def test_use_pep517(data, source, expected): """ Test that we choose correctly between PEP 517 and legacy code paths """ src = data.src.join(source) req = InstallRequirement(None, None, source_dir=src) req.load_pyproject_toml() assert req.use_pep517 is expected
def test_use_pep517(shared_data, source, expected): """ Test that we choose correctly between PEP 517 and legacy code paths """ src = shared_data.src.joinpath(source) req = InstallRequirement(None, None) req.source_dir = src # make req believe it has been unpacked req.load_pyproject_toml() assert req.use_pep517 is expected
def test_backend(tmpdir, data): """Can we call a requirement's backend successfully?""" project = make_project(tmpdir, backend="dummy_backend") req = InstallRequirement(None, None, source_dir=project) req.load_pyproject_toml() env = BuildEnvironment() finder = PackageFinder([data.backends], [], session=PipSession()) env.install_requirements(finder, ["dummy_backend"], "Installing") assert not env.missing_requirements(["dummy_backend"]) assert hasattr(req.pep517_backend, 'build_wheel') with env: assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_use_pep517_rejects_setup_cfg_only(shared_data: TestData) -> None: """ Test that projects with setup.cfg but no pyproject.toml are rejected. """ src = shared_data.src.joinpath("pep517_setup_cfg_only") req = InstallRequirement(None, None) req.source_dir = os.fspath(src) # make req believe it has been unpacked with pytest.raises(InstallationError) as e: req.load_pyproject_toml() err_msg = e.value.args[0] assert ("does not appear to be a Python project: " "neither 'setup.py' nor 'pyproject.toml' found" in err_msg)
def test_backend(tmpdir, data): """Check we can call a requirement's backend successfully""" project_dir = make_project(tmpdir, backend="dummy_backend") req = InstallRequirement(None, None, source_dir=project_dir) req.load_pyproject_toml() env = BuildEnvironment() finder = make_test_finder(find_links=[data.backends]) env.install_requirements(finder, ["dummy_backend"], 'normal', "Installing") conflicting, missing = env.check_requirements(["dummy_backend"]) assert not conflicting and not missing assert hasattr(req.pep517_backend, 'build_wheel') with env: assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_backend_path(tmpdir: Path, data: TestData) -> None: """Check we can call a backend inside the project""" project_dir = make_project(tmpdir, backend="dummy_backend", backend_path=["."]) (project_dir / "dummy_backend.py").write_text(dummy_backend_code) req = InstallRequirement(None, None) req.source_dir = project_dir # make req believe it has been unpacked req.load_pyproject_toml() env = BuildEnvironment() assert hasattr(req.pep517_backend, "build_wheel") with env: assert req.pep517_backend is not None assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_backend_path(tmpdir, data): """Check we can call a backend inside the project""" project_dir = make_project(tmpdir, backend="dummy_backend", backend_path=['.']) (project_dir / 'dummy_backend.py').write_text(dummy_backend_code) req = InstallRequirement(None, None, source_dir=project_dir) req.load_pyproject_toml() env = BuildEnvironment() assert hasattr(req.pep517_backend, 'build_wheel') with env: assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_backend(tmpdir: Path, data: TestData) -> None: """Check we can call a requirement's backend successfully""" project_dir = make_project(tmpdir, backend="dummy_backend") req = InstallRequirement(None, None) req.source_dir = project_dir # make req believe it has been unpacked req.load_pyproject_toml() env = BuildEnvironment() finder = make_test_finder(find_links=[data.backends]) env.install_requirements(finder, ["dummy_backend"], "normal", "Installing") conflicting, missing = env.check_requirements(["dummy_backend"]) assert not conflicting and not missing assert hasattr(req.pep517_backend, "build_wheel") with env: assert req.pep517_backend is not None assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_pep517_parsing_checks_requirements(tmpdir, spec): tmpdir.joinpath("pyproject.toml").write_text( dedent(""" [build-system] requires = [{!r}] build-backend = "foo" """.format(spec))) req = InstallRequirement(None, None) req.source_dir = tmpdir # make req believe it has been unpacked with pytest.raises(InstallationError) as e: req.load_pyproject_toml() err_msg = e.value.args[0] assert "contains an invalid requirement" in err_msg
def test_disabling_pep517_invalid(data, source, msg): """ Test that we fail if we try to disable PEP 517 when it's not acceptable """ src = data.src.join(source) req = InstallRequirement(None, None, source_dir=src) # Simulate --no-use-pep517 req.use_pep517 = False with pytest.raises(InstallationError) as e: req.load_pyproject_toml() err_msg = e.value.args[0] assert "Disabling PEP 517 processing is invalid" in err_msg assert msg in err_msg
def test_backend_path_and_dep(tmpdir, data): """Check we can call a requirement's backend successfully""" project_dir = make_project(tmpdir, backend="dummy_internal_backend", backend_path=['.']) (project_dir / 'dummy_internal_backend.py' ).write_text("from dummy_backend import build_wheel") req = InstallRequirement(None, None, source_dir=project_dir) req.load_pyproject_toml() env = BuildEnvironment() finder = make_test_finder(find_links=[data.backends]) env.install_requirements(finder, ["dummy_backend"], 'normal', "Installing") assert hasattr(req.pep517_backend, 'build_wheel') with env: assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_disabling_pep517_invalid(shared_data: TestData, source: str, msg: str) -> None: """ Test that we fail if we try to disable PEP 517 when it's not acceptable """ src = shared_data.src.joinpath(source) req = InstallRequirement(None, None) req.source_dir = os.fspath(src) # make req believe it has been unpacked # Simulate --no-use-pep517 req.use_pep517 = False with pytest.raises(InstallationError) as e: req.load_pyproject_toml() err_msg = e.value.args[0] assert "Disabling PEP 517 processing is invalid" in err_msg assert msg in err_msg
def test_backend_path_and_dep(tmpdir: Path, data: TestData) -> None: """Check we can call a requirement's backend successfully""" project_dir = make_project( tmpdir, backend="dummy_internal_backend", backend_path=["."] ) (project_dir / "dummy_internal_backend.py").write_text( "from dummy_backend import build_wheel" ) req = InstallRequirement(None, None) req.source_dir = project_dir # make req believe it has been unpacked req.load_pyproject_toml() env = BuildEnvironment() finder = make_test_finder(find_links=[data.backends]) env.install_requirements(finder, ["dummy_backend"], "normal", "Installing") assert hasattr(req.pep517_backend, "build_wheel") with env: assert req.pep517_backend is not None assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_pep517_parsing_checks_requirements(tmpdir: Path, spec: str) -> None: tmpdir.joinpath("pyproject.toml").write_text( dedent(f""" [build-system] requires = [{spec!r}] build-backend = "foo" """)) req = InstallRequirement(None, None) req.source_dir = os.fspath(tmpdir) # make req believe it has been unpacked with pytest.raises(InvalidPyProjectBuildRequires) as e: req.load_pyproject_toml() error = e.value assert str(req) in error.message assert error.context assert "build-system.requires" in error.context assert "contains an invalid requirement" in error.context assert error.hint_stmt assert "PEP 518" in error.hint_stmt
def test_use_pep517(data, source, expected): """ Test that we choose correctly between PEP 517 and legacy code paths """ src = data.src.join(source) req = InstallRequirement(None, None, source_dir=src) req.load_pyproject_toml() assert req.use_pep517 is expected
def test_backend(tmpdir, data): """Check we can call a requirement's backend successfully""" project_dir = make_project(tmpdir, backend="dummy_backend") req = InstallRequirement(None, None, source_dir=project_dir) req.load_pyproject_toml() env = BuildEnvironment() finder = PackageFinder([data.backends], [], session=PipSession()) env.install_requirements(finder, ["dummy_backend"], 'normal', "Installing") conflicting, missing = env.check_requirements(["dummy_backend"]) assert not conflicting and not missing assert hasattr(req.pep517_backend, 'build_wheel') with env: assert req.pep517_backend.build_wheel("dir") == "Backend called"
def test_disabling_pep517_invalid(data, source, msg): """ Test that we fail if we try to disable PEP 517 when it's not acceptable """ src = data.src.join(source) req = InstallRequirement(None, None, source_dir=src) # Simulate --no-use-pep517 req.use_pep517 = False with pytest.raises(InstallationError) as e: req.load_pyproject_toml() err_msg = e.value.args[0] assert "Disabling PEP 517 processing is invalid" in err_msg assert msg in err_msg