diff --git a/tests_with_gitaly/test_commit.py b/tests_with_gitaly/test_commit.py index 82cdf442b61a0535fabf344e20eb9a7c6e7f46a5_dGVzdHNfd2l0aF9naXRhbHkvdGVzdF9jb21taXQucHk=..364d32a1513ca505531d845f7ea88ee14af7b145_dGVzdHNfd2l0aF9naXRhbHkvdGVzdF9jb21taXQucHk= 100644 --- a/tests_with_gitaly/test_commit.py +++ b/tests_with_gitaly/test_commit.py @@ -13,6 +13,7 @@ Repository, ) from hgitaly.stub.commit_pb2 import ( + FindCommitRequest, FindCommitsRequest, ListCommitsRequest, ListCommitsByOidRequest, @@ -196,6 +197,43 @@ rpc_helper.assert_compare(revision=rev) +def test_compare_find_commit(gitaly_comparison): + fixture = gitaly_comparison + wrapper = fixture.hg_repo_wrapper + + def normalizer(rpc_helper, response, **kw): + if response.HasField('commit'): + normalize_commit_message(response.commit) + + rpc_helper = fixture.rpc_helper( + stub_cls=CommitServiceStub, + method_name='FindCommit', + request_cls=FindCommitRequest, + request_sha_attrs=['revision'], + response_sha_attrs=['commit.id', 'commit.parent_ids[]'], + normalizer=normalizer, + ) + + assert_compare = rpc_helper.assert_compare + + assert_compare(revision=b'HEAD') + del fixture.hg_git # invalidate GitHandler instance (for its hg->git map) + + ctx0 = wrapper.commit_file('foo') + wrapper.command('tag', b'start-tag', rev=ctx0.hex()) + wrapper.commit_file('foo', topic='sampletop') + + assert_compare(revision=ctx0.hex()) + assert_compare(revision=b'branch/default') + 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'start-tag') + # TODO refs/tags not implemented! + # TODO special refs and keep-arounds + # TODO cases of collision/shadowing + + def test_compare_find_commits(gitaly_comparison): fixture = gitaly_comparison wrapper = fixture.hg_repo_wrapper