Skip to content
Snippets Groups Projects

Add auto-cancel for pending pipelines on branch, if they are not HEAD

Compare and Show latest version
1 file
+ 12
12
Compare changes
  • Side-by-side
  • Inline
require 'spec_helper'
require 'spec_helper'
describe Ci::CreatePipelineService, services: true do
describe Ci::CreatePipelineService, services: true do
let(:project) { FactoryGirl.create(:project) }
let(:project) { create(:project) }
let(:user) { create(:admin) }
let(:user) { create(:admin) }
before do
before do
@@ -9,13 +9,13 @@
@@ -9,13 +9,13 @@
end
end
describe '#execute' do
describe '#execute' do
def execute_service(projekt: project, after: project.commit.id, commits: [{ message: 'Message' }])
def execute_service(after: project.commit.id, message: 'Message')
params = { ref: 'refs/heads/master',
params = { ref: 'refs/heads/master',
before: '00000000',
before: '00000000',
after: after,
after: after,
commits: commits }
commits: [{ message: message }] }
described_class.new(projekt, user, params).execute
described_class.new(project, user, params).execute
end
end
context 'valid params' do
context 'valid params' do
@@ -29,12 +29,12 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
@@ -29,12 +29,12 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
it { expect(pipeline.builds.first).to be_kind_of(Ci::Build) }
it { expect(pipeline.builds.first).to be_kind_of(Ci::Build) }
it 'auto-cancel pending non-HEAD pipelines' do
it 'auto-cancel pending non-HEAD pipelines' do
project2 = FactoryGirl.create(:project, auto_cancel_pending_pipelines: true)
project.update(auto_cancel_pending_pipelines: 'enabled')
commits = project2.repository.find_commits(ref: 'master', max_count: 2)
commits = project.repository.find_commits(ref: 'master', max_count: 2)
pending_pipeline = execute_service(after: commits[1].id, projekt: project2)
pending_pipeline = execute_service(after: commits[1].id)
execute_service(projekt: project2)
execute_service
expect(pending_pipeline.reload).to have_attributes(status: 'canceled')
expect(pending_pipeline.reload).to have_attributes(status: 'canceled')
end
end
@@ -65,7 +65,7 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
@@ -65,7 +65,7 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
allow_any_instance_of(Ci::Pipeline).to receive(:git_commit_message) { message }
allow_any_instance_of(Ci::Pipeline).to receive(:git_commit_message) { message }
stub_ci_pipeline_yaml_file('invalid: file: file')
stub_ci_pipeline_yaml_file('invalid: file: file')
pipeline = execute_service(commits: [{ message: message }])
pipeline = execute_service(message: message)
expect(pipeline).to be_persisted
expect(pipeline).to be_persisted
expect(pipeline.builds.any?).to be false
expect(pipeline.builds.any?).to be false
@@ -93,7 +93,7 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
@@ -93,7 +93,7 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
ci_messages.each do |ci_message|
ci_messages.each do |ci_message|
it "skips builds creation if the commit message is #{ci_message}" do
it "skips builds creation if the commit message is #{ci_message}" do
pipeline = execute_service(commits: [{ message: ci_message }])
pipeline = execute_service(message: ci_message)
expect(pipeline).to be_persisted
expect(pipeline).to be_persisted
expect(pipeline.builds.any?).to be false
expect(pipeline.builds.any?).to be false
@@ -104,7 +104,7 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
@@ -104,7 +104,7 @@ def execute_service(projekt: project, after: project.commit.id, commits: [{ mess
def check_successful_build_creation_on_git_commit_message(commit_message)
def check_successful_build_creation_on_git_commit_message(commit_message)
allow_any_instance_of(Ci::Pipeline).to receive(:git_commit_message) { commit_message }
allow_any_instance_of(Ci::Pipeline).to receive(:git_commit_message) { commit_message }
pipeline = execute_service(commits: [{ message: commit_message }])
pipeline = execute_service(message: commit_message)
expect(pipeline).to be_persisted
expect(pipeline).to be_persisted
expect(pipeline.builds.first.name).to eq("rspec")
expect(pipeline.builds.first.name).to eq("rspec")
@@ -121,7 +121,7 @@ def check_successful_build_creation_on_git_commit_message(commit_message)
@@ -121,7 +121,7 @@ def check_successful_build_creation_on_git_commit_message(commit_message)
it "fails builds creation if there is [ci skip] tag in commit message and yaml is invalid" do
it "fails builds creation if there is [ci skip] tag in commit message and yaml is invalid" do
stub_ci_pipeline_yaml_file('invalid: file: fiile')
stub_ci_pipeline_yaml_file('invalid: file: fiile')
pipeline = execute_service(commits: [{ message: message }])
pipeline = execute_service(message: message)
expect(pipeline).to be_persisted
expect(pipeline).to be_persisted
expect(pipeline.builds.any?).to be false
expect(pipeline.builds.any?).to be false
Loading