Commit 478990bb authored by Kamil Trzcinski's avatar Kamil Trzcinski

Fix pipeline status change from pending to running

parent 99928aca
...@@ -187,6 +187,7 @@ module Ci ...@@ -187,6 +187,7 @@ module Ci
def process! def process!
Ci::ProcessPipelineService.new(project, user).execute(self) Ci::ProcessPipelineService.new(project, user).execute(self)
reload_status! reload_status!
end end
...@@ -197,7 +198,7 @@ module Ci ...@@ -197,7 +198,7 @@ module Ci
end end
def reload_status! def reload_status!
statuses.reload reload
self.status = self.status =
if yaml_errors.blank? if yaml_errors.blank?
statuses.latest.status || 'skipped' statuses.latest.status || 'skipped'
......
...@@ -76,6 +76,12 @@ class CommitStatus < ActiveRecord::Base ...@@ -76,6 +76,12 @@ class CommitStatus < ActiveRecord::Base
commit_status.pipeline.process! if commit_status.pipeline commit_status.pipeline.process! if commit_status.pipeline
end end
around_transition any => [:pending, :running] do |commit_status, block|
block.call
commit_status.pipeline.reload_status! if commit_status.pipeline
end
end end
delegate :sha, :short_sha, to: :pipeline delegate :sha, :short_sha, to: :pipeline
......
...@@ -257,6 +257,51 @@ describe Ci::Pipeline, models: true do ...@@ -257,6 +257,51 @@ describe Ci::Pipeline, models: true do
end end
end end
describe '#status' do
let!(:build) { create(:ci_build, :created, pipeline: pipeline, name: 'test') }
subject { pipeline.reload.status }
context 'on queuing' do
before { build.queue }
it { is_expected.to eq('pending') }
end
context 'on run' do
before do
build.queue
build.run
end
it { is_expected.to eq('running') }
end
context 'on drop' do
before do
build.drop
end
it { is_expected.to eq('failed') }
end
context 'on success' do
before do
build.success
end
it { is_expected.to eq('success') }
end
context 'on cancel' do
before do
build.cancel
end
it { is_expected.to eq('canceled') }
end
end
describe '#execute_hooks' do describe '#execute_hooks' do
let!(:hook) do let!(:hook) do
create(:project_hook, project: project, pipeline_events: enabled) create(:project_hook, project: project, pipeline_events: enabled)
......
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