pip/tests/lib/git_submodule_helpers.py

75 lines
2.6 KiB
Python

from __future__ import absolute_import
import textwrap
from tests.lib import _create_main_file, _git_commit
def _create_test_package_submodule(env):
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, submodule_path):
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, module_path, rel_path):
"""
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, rel_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',
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