Change get_revision_sha() to return is_branch.

This commit is contained in:
Chris Jerdonek 2018-08-21 02:02:07 -07:00
parent 8d6f7b56fa
commit b11bf9e978
3 changed files with 19 additions and 13 deletions

View File

@ -105,8 +105,8 @@ class Git(VersionControl):
def get_revision_sha(self, dest, rev):
"""
Return a commit hash for the given revision if it names a remote
branch or tag. Otherwise, return None.
Return (sha_or_none, is_branch), where sha_or_none is a commit hash
if the revision names a remote branch or tag, otherwise None.
Args:
dest: the repository directory.
@ -129,7 +129,13 @@ class Git(VersionControl):
branch_ref = 'refs/remotes/origin/{}'.format(rev)
tag_ref = 'refs/tags/{}'.format(rev)
return refs.get(branch_ref) or refs.get(tag_ref)
sha = refs.get(branch_ref)
if sha is not None:
return (sha, True)
sha = refs.get(tag_ref)
return (sha, False)
def resolve_revision(self, dest, url, rev_options):
"""
@ -140,7 +146,7 @@ class Git(VersionControl):
rev_options: a RevOptions object.
"""
rev = rev_options.arg_rev
sha = self.get_revision_sha(dest, rev)
sha, is_branch = self.get_revision_sha(dest, rev)
if sha is not None:
return rev_options.make_new(sha)

View File

@ -37,9 +37,9 @@ def add_commits(script, dest, count):
return shas
def check_rev(repo_dir, rev, expected_sha):
def check_rev(repo_dir, rev, expected):
git = Git()
assert git.get_revision_sha(repo_dir, rev) == expected_sha
assert git.get_revision_sha(repo_dir, rev) == expected
def test_git_dir_ignored():
@ -123,9 +123,9 @@ def test_get_revision_sha(script):
script.run('git', 'tag', 'aaa/v1.0', head_sha, cwd=repo_dir)
script.run('git', 'tag', 'zzz/v1.0', head_sha, cwd=repo_dir)
check_rev(repo_dir, 'v1.0', tag_sha)
check_rev(repo_dir, 'v2.0', tag_sha)
check_rev(repo_dir, 'origin-branch', origin_sha)
check_rev(repo_dir, 'v1.0', (tag_sha, False))
check_rev(repo_dir, 'v2.0', (tag_sha, False))
check_rev(repo_dir, 'origin-branch', (origin_sha, True))
ignored_names = [
# Local branches should be ignored.
@ -143,7 +143,7 @@ def test_get_revision_sha(script):
'does-not-exist',
]
for name in ignored_names:
check_rev(repo_dir, name, None)
check_rev(repo_dir, name, (None, False))
@pytest.mark.network

View File

@ -109,7 +109,7 @@ def test_git_get_src_requirements(git, dist):
@patch('pip._internal.vcs.git.Git.get_revision_sha')
def test_git_resolve_revision_rev_exists(get_sha_mock):
get_sha_mock.return_value = '123456'
get_sha_mock.return_value = ('123456', False)
git = Git()
rev_options = git.make_rev_options('develop')
@ -120,7 +120,7 @@ def test_git_resolve_revision_rev_exists(get_sha_mock):
@patch('pip._internal.vcs.git.Git.get_revision_sha')
def test_git_resolve_revision_rev_not_found(get_sha_mock):
get_sha_mock.return_value = None
get_sha_mock.return_value = (None, False)
git = Git()
rev_options = git.make_rev_options('develop')
@ -131,7 +131,7 @@ def test_git_resolve_revision_rev_not_found(get_sha_mock):
@patch('pip._internal.vcs.git.Git.get_revision_sha')
def test_git_resolve_revision_not_found_warning(get_sha_mock, caplog):
get_sha_mock.return_value = None
get_sha_mock.return_value = (None, False)
git = Git()
url = 'git+https://git.example.com'