Merge branch 'fix/gb/fix-incorrect-commit-status-badge-text' into 'master'
Fix incorrect commit status text on main project page See merge request !10863
This commit is contained in:
commit
0affdb85b1
|
@ -1,10 +1,16 @@
|
|||
##
|
||||
# DEPRECATED
|
||||
#
|
||||
# These helpers are deprecated in favor of detailed CI/CD statuses.
|
||||
#
|
||||
# See 'detailed_status?` method and `Gitlab::Ci::Status` module.
|
||||
#
|
||||
module CiStatusHelper
|
||||
def ci_status_path(pipeline)
|
||||
project = pipeline.project
|
||||
namespace_project_pipeline_path(project.namespace, project, pipeline)
|
||||
end
|
||||
|
||||
# Is used by Commit and Merge Request Widget
|
||||
def ci_label_for_status(status)
|
||||
if detailed_status?(status)
|
||||
return status.label
|
||||
|
@ -22,6 +28,23 @@ module CiStatusHelper
|
|||
end
|
||||
end
|
||||
|
||||
def ci_text_for_status(status)
|
||||
if detailed_status?(status)
|
||||
return status.text
|
||||
end
|
||||
|
||||
case status
|
||||
when 'success'
|
||||
'passed'
|
||||
when 'success_with_warnings'
|
||||
'passed'
|
||||
when 'manual'
|
||||
'blocked'
|
||||
else
|
||||
status
|
||||
end
|
||||
end
|
||||
|
||||
def ci_status_for_statuseable(subject)
|
||||
status = subject.try(:status) || 'not found'
|
||||
status.humanize
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
|
||||
- ref = local_assigns.fetch(:ref)
|
||||
- status = commit.status(ref)
|
||||
- if status
|
||||
= link_to pipelines_namespace_project_commit_path(commit.project.namespace, commit.project, commit), class: "ci-status ci-#{status}" do
|
||||
= ci_icon_for_status(status)
|
||||
= ci_label_for_status(status)
|
||||
= ci_text_for_status(status)
|
||||
|
||||
= link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit), class: "commit_short_id"
|
||||
= link_to_gfm commit.title, namespace_project_commit_path(project.namespace, project, commit), class: "commit-row-message"
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Fix lastest commit status text on main project page
|
||||
merge_request: 10863
|
||||
author:
|
|
@ -6,25 +6,54 @@ describe CiStatusHelper do
|
|||
let(:success_commit) { double("Ci::Pipeline", status: 'success') }
|
||||
let(:failed_commit) { double("Ci::Pipeline", status: 'failed') }
|
||||
|
||||
describe 'ci_icon_for_status' do
|
||||
describe '#ci_icon_for_status' do
|
||||
it 'renders to correct svg on success' do
|
||||
expect(helper).to receive(:render).with('shared/icons/icon_status_success.svg', anything)
|
||||
expect(helper).to receive(:render)
|
||||
.with('shared/icons/icon_status_success.svg', anything)
|
||||
|
||||
helper.ci_icon_for_status(success_commit.status)
|
||||
end
|
||||
|
||||
it 'renders the correct svg on failure' do
|
||||
expect(helper).to receive(:render).with('shared/icons/icon_status_failed.svg', anything)
|
||||
expect(helper).to receive(:render)
|
||||
.with('shared/icons/icon_status_failed.svg', anything)
|
||||
|
||||
helper.ci_icon_for_status(failed_commit.status)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#ci_text_for_status' do
|
||||
context 'when status is manual' do
|
||||
it 'changes the status to blocked' do
|
||||
expect(helper.ci_text_for_status('manual'))
|
||||
.to eq 'blocked'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when status is success' do
|
||||
it 'changes the status to passed' do
|
||||
expect(helper.ci_text_for_status('success'))
|
||||
.to eq 'passed'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when status is something else' do
|
||||
it 'returns status unchanged' do
|
||||
expect(helper.ci_text_for_status('some-status'))
|
||||
.to eq 'some-status'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#pipeline_status_cache_key" do
|
||||
let(:pipeline_status) do
|
||||
Gitlab::Cache::Ci::ProjectPipelineStatus
|
||||
.new(build(:project), sha: '123abc', status: 'success')
|
||||
end
|
||||
|
||||
it "builds a cache key for pipeline status" do
|
||||
pipeline_status = Gitlab::Cache::Ci::ProjectPipelineStatus.new(
|
||||
build(:project),
|
||||
sha: "123abc",
|
||||
status: "success"
|
||||
)
|
||||
expect(helper.pipeline_status_cache_key(pipeline_status)).to eq("pipeline-status/123abc-success")
|
||||
expect(helper.pipeline_status_cache_key(pipeline_status))
|
||||
.to eq("pipeline-status/123abc-success")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'projects/_last_commit', :view do
|
||||
let(:project) { create(:project, :repository) }
|
||||
|
||||
context 'when there is a pipeline present for the commit' do
|
||||
context 'when pipeline is blocked' do
|
||||
let!(:pipeline) do
|
||||
create(:ci_pipeline, :blocked, project: project,
|
||||
sha: project.commit.id)
|
||||
end
|
||||
|
||||
it 'shows correct pipeline badge' do
|
||||
render 'projects/last_commit', commit: project.commit,
|
||||
project: project,
|
||||
ref: :master
|
||||
|
||||
expect(rendered).to have_text "blocked #{project.commit.short_id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,8 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'projects/commit/_commit_box.html.haml' do
|
||||
include Devise::Test::ControllerHelpers
|
||||
|
||||
describe 'projects/commit/_commit_box.html.haml', :view do
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:project, :repository) }
|
||||
|
||||
|
@ -18,14 +16,32 @@ describe 'projects/commit/_commit_box.html.haml' do
|
|||
expect(rendered).to have_text("#{Commit.truncate_sha(project.commit.sha)}")
|
||||
end
|
||||
|
||||
it 'shows the last pipeline that ran for the commit' do
|
||||
create(:ci_pipeline, project: project, sha: project.commit.id, status: 'success')
|
||||
create(:ci_pipeline, project: project, sha: project.commit.id, status: 'canceled')
|
||||
third_pipeline = create(:ci_pipeline, project: project, sha: project.commit.id, status: 'failed')
|
||||
context 'when there is a pipeline present' do
|
||||
context 'when there are multiple pipelines for a commit' do
|
||||
it 'shows the last pipeline' do
|
||||
create(:ci_pipeline, project: project, sha: project.commit.id, status: 'success')
|
||||
create(:ci_pipeline, project: project, sha: project.commit.id, status: 'canceled')
|
||||
third_pipeline = create(:ci_pipeline, project: project, sha: project.commit.id, status: 'failed')
|
||||
|
||||
render
|
||||
render
|
||||
|
||||
expect(rendered).to have_text("Pipeline ##{third_pipeline.id} failed")
|
||||
expect(rendered).to have_text("Pipeline ##{third_pipeline.id} failed")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when pipeline for the commit is blocked' do
|
||||
let!(:pipeline) do
|
||||
create(:ci_pipeline, :blocked, project: project,
|
||||
sha: project.commit.id)
|
||||
end
|
||||
|
||||
it 'shows correct pipeline description' do
|
||||
render
|
||||
|
||||
expect(rendered).to have_text "Pipeline ##{pipeline.id} " \
|
||||
'waiting for manual action'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'viewing a commit' do
|
||||
|
|
Loading…
Reference in New Issue