diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-21 02:50:22 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-21 02:50:22 +0300 |
commit | 9dc93a4519d9d5d7be48ff274127136236a3adb3 (patch) | |
tree | 70467ae3692a0e35e5ea56bcb803eb512a10bedb /spec/lib/gitlab/gitaly_client | |
parent | 4b0f34b6d759d6299322b3a54453e930c6121ff0 (diff) |
Add latest changes from gitlab-org/gitlab@13-11-stable-eev13.11.0-rc43
Diffstat (limited to 'spec/lib/gitlab/gitaly_client')
5 files changed, 82 insertions, 21 deletions
diff --git a/spec/lib/gitlab/gitaly_client/blob_service_spec.rb b/spec/lib/gitlab/gitaly_client/blob_service_spec.rb index 037734f1b13..f0ec58f3c2d 100644 --- a/spec/lib/gitlab/gitaly_client/blob_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/blob_service_spec.rb @@ -14,14 +14,14 @@ RSpec.describe Gitlab::GitalyClient::BlobService do let(:limit) { 5 } let(:not_in) { %w[branch-a branch-b] } let(:expected_params) do - { revision: revision, limit: limit, not_in_refs: not_in, not_in_all: false } + { revisions: ["master", "--not", "branch-a", "branch-b"], limit: limit } end subject { client.get_new_lfs_pointers(revision, limit, not_in) } it 'sends a get_new_lfs_pointers message' do expect_any_instance_of(Gitaly::BlobService::Stub) - .to receive(:get_new_lfs_pointers) + .to receive(:list_lfs_pointers) .with(gitaly_request_with_params(expected_params), kind_of(Hash)) .and_return([]) @@ -31,12 +31,39 @@ RSpec.describe Gitlab::GitalyClient::BlobService do context 'with not_in = :all' do let(:not_in) { :all } let(:expected_params) do - { revision: revision, limit: limit, not_in_refs: [], not_in_all: true } + { revisions: ["master", "--not", "--all"], limit: limit } end it 'sends the correct message' do expect_any_instance_of(Gitaly::BlobService::Stub) - .to receive(:get_new_lfs_pointers) + .to receive(:list_lfs_pointers) + .with(gitaly_request_with_params(expected_params), kind_of(Hash)) + .and_return([]) + + subject + end + end + + context 'with hook environment' do + let(:git_env) do + { + 'GIT_OBJECT_DIRECTORY_RELATIVE' => '.git/objects', + 'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE' => ['/dir/one', '/dir/two'] + } + end + + let(:expected_params) do + expected_repository = repository.gitaly_repository + expected_repository.git_alternate_object_directories = Google::Protobuf::RepeatedField.new(:string) + + { limit: limit, repository: expected_repository } + end + + it 'sends a list_all_lfs_pointers message' do + allow(Gitlab::Git::HookEnv).to receive(:all).with(repository.gl_repository).and_return(git_env) + + expect_any_instance_of(Gitaly::BlobService::Stub) + .to receive(:list_all_lfs_pointers) .with(gitaly_request_with_params(expected_params), kind_of(Hash)) .and_return([]) @@ -46,12 +73,16 @@ RSpec.describe Gitlab::GitalyClient::BlobService do end describe '#get_all_lfs_pointers' do + let(:expected_params) do + { revisions: ["--all"], limit: 0 } + end + subject { client.get_all_lfs_pointers } it 'sends a get_all_lfs_pointers message' do expect_any_instance_of(Gitaly::BlobService::Stub) - .to receive(:get_all_lfs_pointers) - .with(gitaly_request_with_params({}), kind_of(Hash)) + .to receive(:list_lfs_pointers) + .with(gitaly_request_with_params(expected_params), kind_of(Hash)) .and_return([]) subject diff --git a/spec/lib/gitlab/gitaly_client/call_spec.rb b/spec/lib/gitlab/gitaly_client/call_spec.rb index 5c33ac40460..099307fc4e1 100644 --- a/spec/lib/gitlab/gitaly_client/call_spec.rb +++ b/spec/lib/gitlab/gitaly_client/call_spec.rb @@ -24,11 +24,14 @@ RSpec.describe Gitlab::GitalyClient::Call do def expect_call_details_to_match(duration_higher_than: 0) expect(client.list_call_details.size).to eq(1) expect(client.list_call_details.first) - .to match a_hash_including(feature: "#{service}##{rpc}", - duration: a_value > duration_higher_than, - request: an_instance_of(Hash), - rpc: rpc, - backtrace: an_instance_of(Array)) + .to match a_hash_including( + start: a_value > 0, + feature: "#{service}##{rpc}", + duration: a_value > duration_higher_than, + request: an_instance_of(Hash), + rpc: rpc, + backtrace: an_instance_of(Array) + ) end context 'when the response is not an enumerator' do diff --git a/spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb b/spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb index 15eebf62a39..9c3bc935acc 100644 --- a/spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb @@ -11,7 +11,7 @@ RSpec.describe Gitlab::GitalyClient::ObjectPoolService do subject { described_class.new(object_pool) } before do - subject.create(raw_repository) + subject.create(raw_repository) # rubocop:disable Rails/SaveBang end describe '#create' do @@ -22,7 +22,7 @@ RSpec.describe Gitlab::GitalyClient::ObjectPoolService do context 'when the pool already exists' do it 'returns an error' do expect do - subject.create(raw_repository) + subject.create(raw_repository) # rubocop:disable Rails/SaveBang end.to raise_error(GRPC::FailedPrecondition) end end diff --git a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb index 22707c9a36b..9a17140a1e0 100644 --- a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb @@ -88,17 +88,29 @@ RSpec.describe Gitlab::GitalyClient::OperationService do let(:source_sha) { 'cfe32cf61b73a0d5e9f13e774abde7ff789b1660' } let(:ref) { 'refs/merge-requests/x/merge' } let(:message) { 'validaciĆ³n' } - let(:allow_conflicts) { false } let(:response) { Gitaly::UserMergeToRefResponse.new(commit_id: 'new-commit-id') } - subject { client.user_merge_to_ref(user, source_sha, nil, ref, message, first_parent_ref, allow_conflicts) } + let(:payload) do + { source_sha: source_sha, branch: 'branch', target_ref: ref, + message: message, first_parent_ref: first_parent_ref, allow_conflicts: true } + end it 'sends a user_merge_to_ref message' do - expect_any_instance_of(Gitaly::OperationService::Stub) - .to receive(:user_merge_to_ref).with(kind_of(Gitaly::UserMergeToRefRequest), kind_of(Hash)) - .and_return(response) - - subject + freeze_time do + expect_any_instance_of(Gitaly::OperationService::Stub).to receive(:user_merge_to_ref) do |_, request, options| + expect(options).to be_kind_of(Hash) + expect(request.to_h).to eq( + payload.merge({ + repository: repository.gitaly_repository.to_h, + message: message.dup.force_encoding(Encoding::ASCII_8BIT), + user: Gitlab::Git::User.from_gitlab(user).to_gitaly.to_h, + timestamp: { nanos: 0, seconds: Time.current.to_i } + }) + ) + end.and_return(response) + + client.user_merge_to_ref(user, **payload) + end end end diff --git a/spec/lib/gitlab/gitaly_client/repository_service_spec.rb b/spec/lib/gitlab/gitaly_client/repository_service_spec.rb index 7a382df1248..26ec194a2e7 100644 --- a/spec/lib/gitlab/gitaly_client/repository_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/repository_service_spec.rb @@ -246,6 +246,21 @@ RSpec.describe Gitlab::GitalyClient::RepositoryService do end end + describe '#search_files_by_regexp' do + subject(:result) { client.search_files_by_regexp('master', '.*') } + + before do + expect_any_instance_of(Gitaly::RepositoryService::Stub) + .to receive(:search_files_by_name) + .with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash)) + .and_return([double(files: ['file1.txt']), double(files: ['file2.txt'])]) + end + + it 'sends a search_files_by_name message and returns a flatten array' do + expect(result).to contain_exactly('file1.txt', 'file2.txt') + end + end + describe '#disconnect_alternates' do let(:project) { create(:project, :repository) } let(:repository) { project.repository } @@ -255,7 +270,7 @@ RSpec.describe Gitlab::GitalyClient::RepositoryService do let(:object_pool_service) { Gitlab::GitalyClient::ObjectPoolService.new(object_pool) } before do - object_pool_service.create(repository) + object_pool_service.create(repository) # rubocop:disable Rails/SaveBang object_pool_service.link_repository(repository) end |