summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz.bizon@ntsn.pl>2015-12-14 11:28:49 +0100
committerGrzegorz Bizon <grzegorz.bizon@ntsn.pl>2015-12-14 11:28:49 +0100
commitb8f67c5e4735eb25a3d03daeb95900dc87692123 (patch)
treeef00cb4394ca45563636fd49b5a9378f117e9d49
parent2dafec91dd542ac641fea4750bf8fd68211a58af (diff)
downloadgitlab-ce-b8f67c5e4735eb25a3d03daeb95900dc87692123.tar.gz
Do not display ci build status if builds enabled but no `.gitlab-ci.yml`
Ref #3827
-rw-r--r--app/models/ci/commit.rb10
-rw-r--r--app/views/projects/commit/_commit_box.html.haml2
-rw-r--r--app/views/projects/commits/_commit.html.haml4
-rw-r--r--spec/features/commits_spec.rb31
4 files changed, 43 insertions, 4 deletions
diff --git a/app/models/ci/commit.rb b/app/models/ci/commit.rb
index 75465685e98..fca18ba79be 100644
--- a/app/models/ci/commit.rb
+++ b/app/models/ci/commit.rb
@@ -220,6 +220,16 @@ module Ci
update!(committed_at: DateTime.now)
end
+ ##
+ # This method checks if build status should be displayed.
+ #
+ # Build status should be available only if builds are enabled
+ # on project level and `.gitlab-ci.yml` file is present.
+ #
+ def show_build_status?
+ gl_project.builds_enabled? && ci_yaml_file
+ end
+
private
def save_yaml_error(error)
diff --git a/app/views/projects/commit/_commit_box.html.haml b/app/views/projects/commit/_commit_box.html.haml
index 132cdc35c94..634924db247 100644
--- a/app/views/projects/commit/_commit_box.html.haml
+++ b/app/views/projects/commit/_commit_box.html.haml
@@ -40,7 +40,7 @@
- @commit.parents.each do |parent|
= link_to parent.short_id, namespace_project_commit_path(@project.namespace, @project, parent), class: "monospace"
-- if @ci_commit
+- if @ci_commit && @ci_commit.show_build_status?
.pull-right
= link_to ci_status_path(@ci_commit), class: "ci-status ci-#{@ci_commit.status}" do
= ci_status_icon(@ci_commit)
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index 0d64486164e..1303b27c4f3 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -9,7 +9,7 @@
- cache_key.push(ci_commit.status) if ci_commit
= cache(cache_key) do
- %li.commit.js-toggle-container
+ %li.commit.js-toggle-container{ id: "commit-#{commit.short_id}" }
.commit-row-title
%strong.str-truncated
= link_to_gfm commit.title, namespace_project_commit_path(project.namespace, project, commit.id), class: "commit-row-message"
@@ -17,7 +17,7 @@
%a.text-expander.js-toggle-button ...
.pull-right
- - if ci_commit
+ - if ci_commit && ci_commit.show_build_status?
= render_ci_status(ci_commit)
&nbsp;
= clipboard_button(clipboard_text: commit.id)
diff --git a/spec/features/commits_spec.rb b/spec/features/commits_spec.rb
index 80ff4d3751f..f48d96c35a4 100644
--- a/spec/features/commits_spec.rb
+++ b/spec/features/commits_spec.rb
@@ -19,7 +19,36 @@ describe 'Commits' do
let!(:build) { FactoryGirl.create :ci_build, commit: commit }
- describe 'GET /:project/commits/:sha/ci' do
+ describe 'Project commits' do
+ context 'builds enabled' do
+ context '.gitlab-ci.yml found' do
+ before do
+ visit namespace_project_commits_path(project.namespace, project, :master)
+ end
+
+ it 'should show build status' do
+ page.within("//li[@id='commit-#{commit.short_sha}']") do
+ expect(page).to have_css(".ci-status-link")
+ end
+ end
+ end
+
+ context 'no .gitlab-ci.yml found' do
+ before do
+ stub_ci_commit_yaml_file(nil)
+ visit namespace_project_commits_path(project.namespace, project, :master)
+ end
+
+ it 'should not show build status' do
+ page.within("//li[@id='commit-#{commit.short_sha}']") do
+ expect(page).to have_no_css(".ci-status-link")
+ end
+ end
+ end
+ end
+ end
+
+ describe 'Commit builds' do
before do
visit ci_status_path(commit)
end