diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-04-28 17:59:42 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-04-28 17:59:42 +0300 |
commit | b9bbbb319a8186f2b2aecba9a0bd33c95e2d3353 (patch) | |
tree | 02414526097d2ca33320914a386738e6cd901df0 | |
parent | 5f4de8f91e6e75e2d70e199156a813d9608a0fe3 (diff) | |
download | gitlab-ci-b9bbbb319a8186f2b2aecba9a0bd33c95e2d3353.tar.gz |
Fix 'ci skip' tag
-rw-r--r-- | app/models/commit.rb | 4 | ||||
-rw-r--r-- | app/services/create_commit_service.rb | 4 | ||||
-rw-r--r-- | spec/models/commit_spec.rb | 14 | ||||
-rw-r--r-- | spec/services/create_commit_service_spec.rb | 17 |
4 files changed, 21 insertions, 18 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index bfc7878..bc33350 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -58,10 +58,6 @@ class Commit < ActiveRecord::Base project.gitlab? end - def ci_skip? - !!(git_commit_message =~ /(\[ci skip\])/) - end - def git_author_name commit_data[:author][:name] if commit_data && commit_data[:author] end diff --git a/app/services/create_commit_service.rb b/app/services/create_commit_service.rb index 0671a70..646b7c5 100644 --- a/app/services/create_commit_service.rb +++ b/app/services/create_commit_service.rb @@ -15,6 +15,10 @@ class CreateCommitService return false end + if params[:commits] && params[:commits].last[:message] =~ /(\[ci skip\])/ + return false + end + if origin_ref.start_with?('refs/tags/') && !project.create_commit_for_tag?(ref) return false end diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb index af53df9..28cd0ef 100644 --- a/spec/models/commit_spec.rb +++ b/spec/models/commit_spec.rb @@ -54,20 +54,6 @@ describe Commit do end end - describe :ci_skip? do - let(:project) { FactoryGirl.create(:project) } - let(:commit) { FactoryGirl.create(:commit, project: project) } - - it 'true if commit message contains [ci skip]' do - commit.stub(:git_commit_message) { 'Small typo [ci skip]' } - commit.ci_skip?.should == true - end - - it 'false if commit message does not contain [ci skip]' do - commit.ci_skip?.should == false - end - end - describe :project_recipients do context 'always sending notification' do diff --git a/spec/services/create_commit_service_spec.rb b/spec/services/create_commit_service_spec.rb index 761bfaf..7a4ff7d 100644 --- a/spec/services/create_commit_service_spec.rb +++ b/spec/services/create_commit_service_spec.rb @@ -73,5 +73,22 @@ describe CreateCommitService do result.should be_persisted end end + + describe :ci_skip? do + it "skips commit creation if there is [ci skip] tag in commit message" do + commits = [{message: "some message[ci skip]"}] + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312', commits: commits) + result.should be_false + end + + it "does not skips commit creation if there is no [ci skip] tag in commit message" do + project.jobs.first.update(build_tags: true) + + commits = [{message: "some message"}] + + result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312', commits: commits) + result.should be_persisted + end + end end end |