Fix pipeline status change from pending to running

This commit is contained in:
Kamil Trzcinski 2016-08-11 18:37:36 +02:00
parent 99928aca75
commit 478990bb3e
3 changed files with 53 additions and 1 deletions

View file

@ -187,6 +187,7 @@ module Ci
def process!
Ci::ProcessPipelineService.new(project, user).execute(self)
reload_status!
end
@ -197,7 +198,7 @@ module Ci
end
def reload_status!
statuses.reload
reload
self.status =
if yaml_errors.blank?
statuses.latest.status || 'skipped'

View file

@ -76,6 +76,12 @@ class CommitStatus < ActiveRecord::Base
commit_status.pipeline.process! if commit_status.pipeline
end
around_transition any => [:pending, :running] do |commit_status, block|
block.call
commit_status.pipeline.reload_status! if commit_status.pipeline
end
end
delegate :sha, :short_sha, to: :pipeline

View file

@ -257,6 +257,51 @@ describe Ci::Pipeline, models: true do
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
let!(:hook) do
create(:project_hook, project: project, pipeline_events: enabled)