vcs: Use more specific merge error reason (either target or source ref missing)

This commit is contained in:
Martin Bornhold 2016-10-27 12:50:02 +02:00
parent 6ea00dcc6d
commit 66a336156c
3 changed files with 13 additions and 8 deletions

View file

@ -867,7 +867,7 @@ class GitRepository(BaseRepository):
except RepositoryError:
log.exception('Failure when doing local fetch on git shadow repo')
return MergeResponse(
False, False, None, MergeFailureReason.MISSING_COMMIT)
False, False, None, MergeFailureReason.MISSING_SOURCE_REF)
merge_ref = None
merge_failure_reason = MergeFailureReason.NONE

View file

@ -673,11 +673,16 @@ class MercurialRepository(BaseRepository):
return MergeResponse(
False, False, None, MergeFailureReason.TARGET_IS_NOT_HEAD)
if (target_ref.type == 'branch' and
len(self._heads(target_ref.name)) != 1):
try:
if (target_ref.type == 'branch' and
len(self._heads(target_ref.name)) != 1):
return MergeResponse(
False, False, None,
MergeFailureReason.HG_TARGET_HAS_MULTIPLE_HEADS)
except CommitDoesNotExistError as e:
log.exception('Failure when looking up branch heads on hg target')
return MergeResponse(
False, False, None,
MergeFailureReason.HG_TARGET_HAS_MULTIPLE_HEADS)
False, False, None, MergeFailureReason.MISSING_TARGET_REF)
shadow_repo = self._get_shadow_instance(shadow_repository_path)
@ -691,7 +696,7 @@ class MercurialRepository(BaseRepository):
except CommitDoesNotExistError:
log.exception('Failure when doing local pull on hg shadow repo')
return MergeResponse(
False, False, None, MergeFailureReason.MISSING_COMMIT)
False, False, None, MergeFailureReason.MISSING_SOURCE_REF)
merge_ref = None
merge_failure_reason = MergeFailureReason.NONE

View file

@ -401,10 +401,10 @@ class TestRepositoryMerge:
assert merge_response == expected_merge_response
def test_merge_missing_commit(self, vcsbackend):
def test_merge_missing_source_reference(self, vcsbackend):
self.prepare_for_success(vcsbackend)
expected_merge_response = MergeResponse(
False, False, None, MergeFailureReason.MISSING_COMMIT)
False, False, None, MergeFailureReason.MISSING_SOURCE_REF)
source_ref = Reference(
self.source_ref.type, 'not_existing', self.source_ref.commit_id)