mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
42359a9605
The pip-specific Path implementation has been removed, and all its usages replaced by pathlib.Path. The tmpdir and tmpdir_factory fixtures are also removed, and all usages are replaced by tmp_path and tmp_path_factory, which use pathlib.Path. The pip() function now also accepts pathlib.Path so we don't need to put str() everywhere. Path arguments are coerced with os.fspath() into str.
83 lines
2.8 KiB
Python
83 lines
2.8 KiB
Python
import os
|
|
import textwrap
|
|
from pathlib import Path
|
|
from typing import Tuple
|
|
|
|
from tests.lib import PipTestEnvironment, _create_main_file, _git_commit
|
|
|
|
|
|
def _create_test_package_submodule(env: PipTestEnvironment) -> Path:
|
|
env.scratch_path.joinpath("version_pkg_submodule").mkdir()
|
|
submodule_path = env.scratch_path / "version_pkg_submodule"
|
|
env.run("touch", "testfile", cwd=submodule_path)
|
|
env.run("git", "init", cwd=submodule_path)
|
|
env.run("git", "add", ".", cwd=submodule_path)
|
|
_git_commit(env, submodule_path, message="initial version / submodule")
|
|
|
|
return submodule_path
|
|
|
|
|
|
def _change_test_package_submodule(
|
|
env: PipTestEnvironment, submodule_path: Path
|
|
) -> None:
|
|
submodule_path.joinpath("testfile").write_text("this is a changed file")
|
|
submodule_path.joinpath("testfile2").write_text("this is an added file")
|
|
env.run("git", "add", ".", cwd=submodule_path)
|
|
_git_commit(env, submodule_path, message="submodule change")
|
|
|
|
|
|
def _pull_in_submodule_changes_to_module(
|
|
env: PipTestEnvironment, module_path: Path, rel_path: str
|
|
) -> None:
|
|
"""
|
|
Args:
|
|
rel_path: the location of the submodule relative to the superproject.
|
|
"""
|
|
submodule_path = module_path / rel_path
|
|
env.run("git", "pull", "-q", "origin", "master", cwd=submodule_path)
|
|
# Pass -a to stage the submodule changes that were just pulled in.
|
|
_git_commit(env, module_path, message="submodule change", stage_modified=True)
|
|
|
|
|
|
def _create_test_package_with_submodule(
|
|
env: PipTestEnvironment, rel_path: str
|
|
) -> Tuple[Path, Path]:
|
|
"""
|
|
Args:
|
|
rel_path: the location of the submodule relative to the superproject.
|
|
"""
|
|
env.scratch_path.joinpath("version_pkg").mkdir()
|
|
version_pkg_path = env.scratch_path / "version_pkg"
|
|
version_pkg_path.joinpath("testpkg").mkdir()
|
|
pkg_path = version_pkg_path / "testpkg"
|
|
|
|
pkg_path.joinpath("__init__.py").write_text("# hello there")
|
|
_create_main_file(pkg_path, name="version_pkg", output="0.1")
|
|
version_pkg_path.joinpath("setup.py").write_text(
|
|
textwrap.dedent(
|
|
"""\
|
|
from setuptools import setup, find_packages
|
|
setup(name='version_pkg',
|
|
version='0.1',
|
|
packages=find_packages(),
|
|
)
|
|
"""
|
|
)
|
|
)
|
|
env.run("git", "init", cwd=version_pkg_path)
|
|
env.run("git", "add", ".", cwd=version_pkg_path)
|
|
_git_commit(env, version_pkg_path, message="initial version")
|
|
|
|
submodule_path = _create_test_package_submodule(env)
|
|
|
|
env.run(
|
|
"git",
|
|
"submodule",
|
|
"add",
|
|
os.fspath(submodule_path),
|
|
rel_path,
|
|
cwd=version_pkg_path,
|
|
)
|
|
_git_commit(env, version_pkg_path, message="initial version w submodule")
|
|
|
|
return version_pkg_path, submodule_path
|