def test_info_setup_complex_pep517_error(mocker, demo_setup_complex): mocker.patch( "poetry.utils.env.VirtualEnv.run", autospec=True, side_effect=EnvCommandError(CalledProcessError(1, "mock", output="mock")), ) with pytest.raises(PackageInfoError): PackageInfo.from_directory(demo_setup_complex)
def test_info_setup_complex_disable_build(mocker, demo_setup_complex): spy = mocker.spy(VirtualEnv, "run") info = PackageInfo.from_directory(demo_setup_complex, disable_build=True) assert spy.call_count == 0 assert info.name == "demo" assert info.version == "0.1.0" assert info.requires_dist is None
def test_info_no_setup_pkg_info_no_deps(): info = PackageInfo.from_directory( FIXTURE_DIR_INSPECTIONS / "demo_no_setup_pkg_info_no_deps", disable_build=True, ) assert info.name == "demo" assert info.version == "0.1.0" assert info.requires_dist is None
def test_info_setup_missing_mandatory_should_trigger_pep517( mocker, source_dir, missing): setup = "from setuptools import setup; " setup += "setup(" setup += 'name="demo", ' if missing != "name" else "" setup += 'version="0.1.0", ' if missing != "version" else "" setup += 'install_requires=["package"]' if missing != "install_requires" else "" setup += ")" setup_py = source_dir / "setup.py" setup_py.write_text(decode(setup)) spy = mocker.spy(VirtualEnv, "run") try: PackageInfo.from_directory(source_dir) except PackageInfoError: assert spy.call_count == 3 else: assert spy.call_count == 1
def get_package_from_directory(cls, directory: Path, name: Optional[str] = None) -> "Package": package = PackageInfo.from_directory(path=directory).to_package( root_dir=directory) if name and name != package.name: # For now, the dependency's name must match the actual package's name raise RuntimeError( f"The dependency name for {name} does not match the actual package's name: {package.name}" ) return package
def get_package_from_directory( cls, directory, name=None): # type: (Path, Optional[str]) -> Package package = PackageInfo.from_directory(path=directory).to_package( root_dir=directory) if name and name != package.name: # For now, the dependency's name must match the actual package's name raise RuntimeError( "The dependency name for {} does not match the actual package's name: {}" .format(name, package.name)) return package
def test_info_prefer_poetry_config_over_egg_info(): info = PackageInfo.from_directory(FIXTURE_DIR_INSPECTIONS / "demo_with_obsolete_egg_info") demo_check_info(info)
def test_info_setup_complex_pep517_legacy(demo_setup_complex_pep517_legacy): info = PackageInfo.from_directory(demo_setup_complex_pep517_legacy) demo_check_info(info, requires_dist={"package"})
def test_info_setup_complex(demo_setup_complex): info = PackageInfo.from_directory(demo_setup_complex) demo_check_info(info, requires_dist={"package"})
def test_info_setup_cfg(mocker, demo_setup_cfg): spy = mocker.spy(VirtualEnv, "run") info = PackageInfo.from_directory(demo_setup_cfg) assert spy.call_count == 0 demo_check_info(info, requires_dist={"package"})
def test_info_from_poetry_directory(): info = PackageInfo.from_directory(FIXTURE_DIR_INSPECTIONS / "demo", disable_build=True) demo_check_info(info)
def test_info_setup_simple_py2(mocker, demo_setup): spy = mocker.spy(VirtualEnv, "run") info = PackageInfo.from_directory(demo_setup, allow_build=True) assert spy.call_count == 2 demo_check_info(info, requires_dist={"package"})
def get_package_from_directory(cls, directory: Path) -> Package: return PackageInfo.from_directory(path=directory).to_package( root_dir=directory)
def test_info_setup_simple(mocker: MockerFixture, demo_setup: Path): spy = mocker.spy(VirtualEnv, "run") info = PackageInfo.from_directory(demo_setup) assert spy.call_count == 0 demo_check_info(info, requires_dist={"package"})