diff options
author | Rémy Coutable <remy@rymai.me> | 2016-05-04 16:07:13 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-05-04 16:07:13 +0000 |
commit | 1a9d50597262a31f03dc66584f05d66b905d9d59 (patch) | |
tree | 2599b4983b22fb9e617a80d9205e4401a6e1aee7 /spec/models | |
parent | c2c70cfcb31f67809d8dfb5f470e0dc1eefe15d9 (diff) | |
parent | 209f2f1e6fd861dd7bb6a73389400b4bb266d26d (diff) | |
download | gitlab-ce-1a9d50597262a31f03dc66584f05d66b905d9d59.tar.gz |
Merge branch 'use-rugged-to-create-tag' into 'master'
Use Rugged's TagCollection#create instead of gitlab-shell's Repository#add_tag for better performance
This was originally opened at !1757 by @pcarranza but I changed it to use Rugged instead of gitlab_git, following @DouweM's request.
Once this is merged, https://gitlab.com/gitlab-org/gitlab-shell/merge_requests/26 will be mergeable too.
See merge request !3745
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/repository_spec.rb | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 204c9eb20f3..34a13f9b5c9 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -858,13 +858,30 @@ describe Repository, models: true do end describe '#add_tag' do - it 'adds a tag' do - expect(repository).to receive(:before_push_tag) + context 'with a valid target' do + let(:user) { build_stubbed(:user) } - expect_any_instance_of(Gitlab::Shell).to receive(:add_tag). - with(repository.path_with_namespace, '8.5', 'master', 'foo') + it 'creates the tag using rugged' do + expect(repository.rugged.tags).to receive(:create). + with('8.5', repository.commit('master').id, + hash_including(message: 'foo', + tagger: hash_including(name: user.name, email: user.email))). + and_call_original - repository.add_tag('8.5', 'master', 'foo') + repository.add_tag(user, '8.5', 'master', 'foo') + end + + it 'returns a Gitlab::Git::Tag object' do + tag = repository.add_tag(user, '8.5', 'master', 'foo') + + expect(tag).to be_a(Gitlab::Git::Tag) + end + end + + context 'with an invalid target' do + it 'returns false' do + expect(repository.add_tag(user, '8.5', 'bar', 'foo')).to be false + end end end |