Commit 71a6c83a authored by Sean McGivern's avatar Sean McGivern

Merge branch 'gitaly-clean-up-tests' into 'master'

Clean up Gitaly tests

See merge request !12526
parents f7e7e40d ec35a9e8
...@@ -34,7 +34,7 @@ module Gitlab ...@@ -34,7 +34,7 @@ module Gitlab
commit_id: commit_id, commit_id: commit_id,
prefix: ref_prefix prefix: ref_prefix
) )
GitalyClient.call(@storage, :ref, :find_ref_name, request).name encode!(GitalyClient.call(@storage, :ref, :find_ref_name, request).name.dup)
end end
def count_tag_names def count_tag_names
......
...@@ -20,6 +20,7 @@ describe Gitlab::Git::Blame, seed_helper: true do ...@@ -20,6 +20,7 @@ describe Gitlab::Git::Blame, seed_helper: true do
expect(data.size).to eq(95) expect(data.size).to eq(95)
expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit) expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
expect(data.first[:line]).to eq("# Contribute to GitLab") expect(data.first[:line]).to eq("# Contribute to GitLab")
expect(data.first[:line]).to be_utf8
end end
end end
...@@ -40,6 +41,7 @@ describe Gitlab::Git::Blame, seed_helper: true do ...@@ -40,6 +41,7 @@ describe Gitlab::Git::Blame, seed_helper: true do
expect(data.size).to eq(1) expect(data.size).to eq(1)
expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit) expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
expect(data.first[:line]).to eq("Ä ü") expect(data.first[:line]).to eq("Ä ü")
expect(data.first[:line]).to be_utf8
end end
end end
...@@ -61,6 +63,7 @@ describe Gitlab::Git::Blame, seed_helper: true do ...@@ -61,6 +63,7 @@ describe Gitlab::Git::Blame, seed_helper: true do
expect(data.size).to eq(1) expect(data.size).to eq(1)
expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit) expect(data.first[:commit]).to be_kind_of(Gitlab::Git::Commit)
expect(data.first[:line]).to eq(" ") expect(data.first[:line]).to eq(" ")
expect(data.first[:line]).to be_utf8
end end
end end
end end
...@@ -48,7 +48,7 @@ describe Gitlab::Git::Branch, seed_helper: true do ...@@ -48,7 +48,7 @@ describe Gitlab::Git::Branch, seed_helper: true do
expect(Gitlab::Git::Commit).to receive(:decorate) expect(Gitlab::Git::Commit).to receive(:decorate)
.with(hash_including(attributes)).and_call_original .with(hash_including(attributes)).and_call_original
expect(branch.dereferenced_target.message.encoding).to be(Encoding::UTF_8) expect(branch.dereferenced_target.message).to be_utf8
end end
end end
......
...@@ -180,7 +180,7 @@ EOT ...@@ -180,7 +180,7 @@ EOT
let(:raw_patch) { @raw_diff_hash[:diff].encode(Encoding::ASCII_8BIT) } let(:raw_patch) { @raw_diff_hash[:diff].encode(Encoding::ASCII_8BIT) }
it 'encodes diff patch to UTF-8' do it 'encodes diff patch to UTF-8' do
expect(diff.diff.encoding).to eq(Encoding::UTF_8) expect(diff.diff).to be_utf8
end end
end end
end end
......
...@@ -27,34 +27,24 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -27,34 +27,24 @@ describe Gitlab::Git::Repository, seed_helper: true do
end end
it 'returns UTF-8' do it 'returns UTF-8' do
expect(repository.root_ref.encoding).to eq(Encoding.find('UTF-8')) expect(repository.root_ref).to be_utf8
end end
context 'with gitaly enabled' do it 'gets the branch name from GitalyClient' do
before do expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name)
stub_gitaly repository.root_ref
end end
after do
Gitlab::GitalyClient.clear_stubs!
end
it 'gets the branch name from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name)
repository.root_ref
end
it 'wraps GRPC not found' do it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name)
.and_raise(GRPC::NotFound) .and_raise(GRPC::NotFound)
expect { repository.root_ref }.to raise_error(Gitlab::Git::Repository::NoRepository) expect { repository.root_ref }.to raise_error(Gitlab::Git::Repository::NoRepository)
end end
it 'wraps GRPC exceptions' do it 'wraps GRPC exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name)
.and_raise(GRPC::Unknown) .and_raise(GRPC::Unknown)
expect { repository.root_ref }.to raise_error(Gitlab::Git::CommandError) expect { repository.root_ref }.to raise_error(Gitlab::Git::CommandError)
end
end end
end end
...@@ -129,37 +119,27 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -129,37 +119,27 @@ describe Gitlab::Git::Repository, seed_helper: true do
end end
it 'returns UTF-8' do it 'returns UTF-8' do
expect(subject.first.encoding).to eq(Encoding.find('UTF-8')) expect(subject.first).to be_utf8
end end
it { is_expected.to include("master") } it { is_expected.to include("master") }
it { is_expected.not_to include("branch-from-space") } it { is_expected.not_to include("branch-from-space") }
context 'with gitaly enabled' do it 'gets the branch names from GitalyClient' do
before do expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names)
stub_gitaly subject
end end
after do
Gitlab::GitalyClient.clear_stubs!
end
it 'gets the branch names from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names)
subject
end
it 'wraps GRPC not found' do it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names)
.and_raise(GRPC::NotFound) .and_raise(GRPC::NotFound)
expect { subject }.to raise_error(Gitlab::Git::Repository::NoRepository) expect { subject }.to raise_error(Gitlab::Git::Repository::NoRepository)
end end
it 'wraps GRPC other exceptions' do it 'wraps GRPC other exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names)
.and_raise(GRPC::Unknown) .and_raise(GRPC::Unknown)
expect { subject }.to raise_error(Gitlab::Git::CommandError) expect { subject }.to raise_error(Gitlab::Git::CommandError)
end
end end
end end
...@@ -173,7 +153,7 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -173,7 +153,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
end end
it 'returns UTF-8' do it 'returns UTF-8' do
expect(subject.first.encoding).to eq(Encoding.find('UTF-8')) expect(subject.first).to be_utf8
end end
describe '#last' do describe '#last' do
...@@ -183,31 +163,21 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -183,31 +163,21 @@ describe Gitlab::Git::Repository, seed_helper: true do
it { is_expected.to include("v1.0.0") } it { is_expected.to include("v1.0.0") }
it { is_expected.not_to include("v5.0.0") } it { is_expected.not_to include("v5.0.0") }
context 'with gitaly enabled' do it 'gets the tag names from GitalyClient' do
before do expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names)
stub_gitaly subject
end end
after do
Gitlab::GitalyClient.clear_stubs!
end
it 'gets the tag names from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names)
subject
end
it 'wraps GRPC not found' do it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names)
.and_raise(GRPC::NotFound) .and_raise(GRPC::NotFound)
expect { subject }.to raise_error(Gitlab::Git::Repository::NoRepository) expect { subject }.to raise_error(Gitlab::Git::Repository::NoRepository)
end end
it 'wraps GRPC exceptions' do it 'wraps GRPC exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names)
.and_raise(GRPC::Unknown) .and_raise(GRPC::Unknown)
expect { subject }.to raise_error(Gitlab::Git::CommandError) expect { subject }.to raise_error(Gitlab::Git::CommandError)
end
end end
end end
...@@ -1281,42 +1251,31 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -1281,42 +1251,31 @@ describe Gitlab::Git::Repository, seed_helper: true do
expect(@repo.local_branches.any? { |branch| branch.name == 'local_branch' }).to eq(true) expect(@repo.local_branches.any? { |branch| branch.name == 'local_branch' }).to eq(true)
end end
context 'with gitaly enabled' do it 'returns a Branch with UTF-8 fields' do
before do branches = @repo.local_branches.to_a
stub_gitaly expect(branches.size).to be > 0
end branches.each do |branch|
expect(branch.name).to be_utf8
after do expect(branch.target).to be_utf8 unless branch.target.nil?
Gitlab::GitalyClient.clear_stubs!
end
it 'returns a Branch with UTF-8 fields' do
branches = @repo.local_branches.to_a
expect(branches.size).to be > 0
utf_8 = Encoding.find('utf-8')
branches.each do |branch|
expect(branch.name.encoding).to eq(utf_8)
expect(branch.target.encoding).to eq(utf_8) unless branch.target.nil?
end
end end
end
it 'gets the branches from GitalyClient' do it 'gets the branches from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:local_branches) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:local_branches)
.and_return([]) .and_return([])
@repo.local_branches @repo.local_branches
end end
it 'wraps GRPC not found' do it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:local_branches) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:local_branches)
.and_raise(GRPC::NotFound) .and_raise(GRPC::NotFound)
expect { @repo.local_branches }.to raise_error(Gitlab::Git::Repository::NoRepository) expect { @repo.local_branches }.to raise_error(Gitlab::Git::Repository::NoRepository)
end end
it 'wraps GRPC exceptions' do it 'wraps GRPC exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:local_branches) expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:local_branches)
.and_raise(GRPC::Unknown) .and_raise(GRPC::Unknown)
expect { @repo.local_branches }.to raise_error(Gitlab::Git::CommandError) expect { @repo.local_branches }.to raise_error(Gitlab::Git::CommandError)
end
end end
end end
...@@ -1395,11 +1354,4 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -1395,11 +1354,4 @@ describe Gitlab::Git::Repository, seed_helper: true do
sha = Rugged::Commit.create(repo, options) sha = Rugged::Commit.create(repo, options)
repo.lookup(sha) repo.lookup(sha)
end end
def stub_gitaly
allow(Gitlab::GitalyClient).to receive(:feature_enabled?).and_return(true)
stub = double(:stub)
allow(Gitaly::Ref::Stub).to receive(:new).and_return(stub)
end
end end
...@@ -6,17 +6,6 @@ describe Gitlab::GitalyClient::Ref do ...@@ -6,17 +6,6 @@ describe Gitlab::GitalyClient::Ref do
let(:relative_path) { project.path_with_namespace + '.git' } let(:relative_path) { project.path_with_namespace + '.git' }
let(:client) { described_class.new(project.repository) } let(:client) { described_class.new(project.repository) }
before do
allow(Gitlab.config.gitaly).to receive(:enabled).and_return(true)
end
after do
# When we say `expect_any_instance_of(Gitaly::Ref::Stub)` a double is created,
# and because GitalyClient shares stubs these will get passed from example to
# example, which will cause an error, so we clean the stubs after each example.
Gitlab::GitalyClient.clear_stubs!
end
describe '#branch_names' do describe '#branch_names' do
it 'sends a find_all_branch_names message' do it 'sends a find_all_branch_names message' do
expect_any_instance_of(Gitaly::Ref::Stub) expect_any_instance_of(Gitaly::Ref::Stub)
...@@ -82,4 +71,13 @@ describe Gitlab::GitalyClient::Ref do ...@@ -82,4 +71,13 @@ describe Gitlab::GitalyClient::Ref do
expect { client.local_branches(sort_by: 'invalid_sort') }.to raise_error(ArgumentError) expect { client.local_branches(sort_by: 'invalid_sort') }.to raise_error(ArgumentError)
end end
end end
describe '#find_ref_name', seed_helper: true do
let(:repository) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH) }
let(:client) { described_class.new(repository) }
subject { client.find_ref_name(SeedRepo::Commit::ID, 'refs/heads/master') }
it { should be_utf8 }
it { should eq('refs/heads/master') }
end
end end
...@@ -120,28 +120,17 @@ describe Environment, models: true do ...@@ -120,28 +120,17 @@ describe Environment, models: true do
let(:head_commit) { project.commit } let(:head_commit) { project.commit }
let(:commit) { project.commit.parent } let(:commit) { project.commit.parent }
context 'Gitaly find_ref_name feature disabled' do it 'returns deployment id for the environment' do
it 'returns deployment id for the environment' do expect(environment.first_deployment_for(commit)).to eq deployment1
expect(environment.first_deployment_for(commit)).to eq deployment1 end
end
it 'return nil when no deployment is found' do it 'return nil when no deployment is found' do
expect(environment.first_deployment_for(head_commit)).to eq nil expect(environment.first_deployment_for(head_commit)).to eq nil
end
end end
# TODO: Uncomment when feature is reenabled it 'returns a UTF-8 ref' do
# context 'Gitaly find_ref_name feature enabled' do expect(environment.first_deployment_for(commit).ref).to be_utf8
# before do end
# allow(Gitlab::GitalyClient).to receive(:feature_enabled?).with(:find_ref_name).and_return(true)
# end
#
# it 'calls GitalyClient' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:find_ref_name)
#
# environment.first_deployment_for(commit)
# end
# end
end end
describe '#environment_type' do describe '#environment_type' do
......
RSpec::Matchers.define :be_utf8 do |_|
match do |actual|
actual.is_a?(String) && actual.encoding == Encoding.find('UTF-8')
end
description do
"be a String with encoding UTF-8"
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment