def poetry(config): poetry = Factory().create_poetry( Path(__file__).parent.parent / "fixtures" / "simple_project" ) poetry.set_config(config) return poetry
def _factory( name=None, dependencies=None, dev_dependencies=None, pyproject_content=None, poetry_lock_content=None, install_deps=True, ): project_dir = workspace / "poetry-fixture-{}".format(name) dependencies = dependencies or {} dev_dependencies = dev_dependencies or {} if pyproject_content: project_dir.mkdir(parents=True, exist_ok=True) with project_dir.joinpath("pyproject.toml").open( "w", encoding="utf-8" ) as f: f.write(pyproject_content) else: layout("src")( name, "0.1.0", author="PyTest Tester <*****@*****.**>", readme_format="md", python=default_python, dependencies=dependencies, dev_dependencies=dev_dependencies, ).create(project_dir, with_tests=False) if poetry_lock_content: lock_file = project_dir / "poetry.lock" lock_file.write_text(data=poetry_lock_content, encoding="utf-8") poetry = Factory().create_poetry(project_dir) locker = TestLocker( poetry.locker.lock.path, poetry.locker._local_config ) # noqa locker.write() poetry.set_locker(locker) poetry.set_config(config) pool = Pool() pool.add_repository(repo) poetry.set_pool(pool) if install_deps: for deps in [dependencies, dev_dependencies]: for name, version in deps.items(): pkg = get_package(name, version) repo.add_package(pkg) installed.add_package(pkg) return poetry
class TestApplication(Application): def __init__(self, poetry): super(TestApplication, self).__init__() self._poetry = poetry def reset_poetry(self): poetry = self._poetry self._poetry = Factory().create_poetry(self._poetry.file.path.parent) self._poetry.set_pool(poetry.pool) self._poetry.set_config(poetry.config) self._poetry.set_locker( TestLocker(poetry.locker.lock.path, self._poetry.local_config))
def poetry(repo, project_directory, config): p = Factory().create_poetry( Path(__file__).parent.parent / "fixtures" / project_directory) p.set_locker(TestLocker(p.locker.lock.path, p.locker._local_config)) with p.file.path.open(encoding="utf-8") as f: content = f.read() p.set_config(config) pool = Pool() pool.add_repository(repo) p.set_pool(pool) yield p with p.file.path.open("w", encoding="utf-8") as f: f.write(content)
def _factory( name: str | None = None, dependencies: dict[str, str] | None = None, dev_dependencies: dict[str, str] | None = None, pyproject_content: str | None = None, poetry_lock_content: str | None = None, install_deps: bool = True, source: Path | None = None, locker_config: dict[str, Any] | None = None, ) -> Poetry: project_dir = workspace / f"poetry-fixture-{name}" dependencies = dependencies or {} dev_dependencies = dev_dependencies or {} if pyproject_content or source: if source: project_dir.parent.mkdir(parents=True, exist_ok=True) shutil.copytree(source, project_dir) else: project_dir.mkdir(parents=True, exist_ok=True) if pyproject_content: with project_dir.joinpath("pyproject.toml").open( "w", encoding="utf-8") as f: f.write(pyproject_content) else: layout("src")( name, "0.1.0", author="PyTest Tester <*****@*****.**>", readme_format="md", python=default_python, dependencies=dependencies, dev_dependencies=dev_dependencies, ).create(project_dir, with_tests=False) if poetry_lock_content: lock_file = project_dir / "poetry.lock" lock_file.write_text(data=poetry_lock_content, encoding="utf-8") poetry = Factory().create_poetry(project_dir) locker = TestLocker(poetry.locker.lock.path, locker_config or poetry.locker._local_config) locker.write() poetry.set_locker(locker) poetry.set_config(config) pool = Pool() pool.add_repository(repo) poetry.set_pool(pool) if install_deps: for deps in [dependencies, dev_dependencies]: for name, version in deps.items(): pkg = get_package(name, version) repo.add_package(pkg) installed.add_package(pkg) return poetry