diff --git a/hgitaly/service/commit.py b/hgitaly/service/commit.py index 6b54aa74ebab589e34dd0eae27554650b6add37e_aGdpdGFseS9zZXJ2aWNlL2NvbW1pdC5weQ==..5c477c3311dddacda5469935c1f0082d623f60be_aGdpdGFseS9zZXJ2aWNlL2NvbW1pdC5weQ== 100644 --- a/hgitaly/service/commit.py +++ b/hgitaly/service/commit.py @@ -486,4 +486,8 @@ def FindCommit(self, request: FindCommitRequest, context) -> FindCommitResponse: logger = LoggerAdapter(base_logger, context) + revision = request.revision + if not revision: + context.abort(StatusCode.INVALID_ARGUMENT, "empty revision") + repo = self.load_repo(request.repository, context) @@ -489,5 +493,4 @@ repo = self.load_repo(request.repository, context) - revision = request.revision ctx = gitlab_revision_changeset(repo, revision) if ctx is None: diff --git a/hgitaly/service/tests/test_commit.py b/hgitaly/service/tests/test_commit.py index 6b54aa74ebab589e34dd0eae27554650b6add37e_aGdpdGFseS9zZXJ2aWNlL3Rlc3RzL3Rlc3RfY29tbWl0LnB5..5c477c3311dddacda5469935c1f0082d623f60be_aGdpdGFseS9zZXJ2aWNlL3Rlc3RzL3Rlc3RfY29tbWl0LnB5 100644 --- a/hgitaly/service/tests/test_commit.py +++ b/hgitaly/service/tests/test_commit.py @@ -275,6 +275,11 @@ # null revision assert not find_commit(b'0' * 40).HasField('commit') + # no revision + with pytest.raises(grpc.RpcError) as exc_info: + find_commit(revision=b'') + assert exc_info.value.code() == grpc.StatusCode.INVALID_ARGUMENT + def test_find_commits(commit_fixture_empty_repo): fixture = commit_fixture_empty_repo diff --git a/tests_with_gitaly/test_commit.py b/tests_with_gitaly/test_commit.py index 6b54aa74ebab589e34dd0eae27554650b6add37e_dGVzdHNfd2l0aF9naXRhbHkvdGVzdF9jb21taXQucHk=..5c477c3311dddacda5469935c1f0082d623f60be_dGVzdHNfd2l0aF9naXRhbHkvdGVzdF9jb21taXQucHk= 100644 --- a/tests_with_gitaly/test_commit.py +++ b/tests_with_gitaly/test_commit.py @@ -232,6 +232,7 @@ assert_compare(revision=b'refs/heads/branch/default') assert_compare(revision=b'topic/default/sampletop') assert_compare(revision=b'refs/heads/topic/default/sampletop') + assert_compare(revision=b'refs/heads') assert_compare(revision=b'start-tag') assert_compare(revision=b'refs/tags/start-tag') assert_compare(revision=b'refs/tags/unknown') @@ -279,6 +280,16 @@ rpc_helper.rpc('hg', revision=hg_sha_tag).commit.id.encode() ) == rpc_helper.rpc('git', revision=git_sha_tag).commit.id.encode() + # error cases + assert_compare_errors = rpc_helper.assert_compare_errors + assert_compare_errors() # no revision + assert_compare_errors(repository=None, + revision=b'HEAD', + same_details=False) + assert_compare_errors(repository=None) # and no revision + fixture.gitaly_repo.relative_path = 'unknown/repo' + assert_compare_errors(revision=b'HEAD', same_details=False) + def test_compare_find_commits(gitaly_comparison): fixture = gitaly_comparison