summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/merge_request.js.coffee8
-rw-r--r--app/assets/stylesheets/sections/merge_requests.scss4
-rw-r--r--app/controllers/projects/merge_requests_controller.rb13
-rw-r--r--app/models/project_services/gitlab_ci_service.rb17
4 files changed, 37 insertions, 5 deletions
diff --git a/app/assets/javascripts/merge_request.js.coffee b/app/assets/javascripts/merge_request.js.coffee
index 59e53b69e3d..1c391c61bba 100644
--- a/app/assets/javascripts/merge_request.js.coffee
+++ b/app/assets/javascripts/merge_request.js.coffee
@@ -40,6 +40,8 @@ class MergeRequest
if @opts.ci_enable
$.get @opts.url_to_ci_check, (data) =>
this.showCiState data.status
+ if data.coverage
+ this.showCiCoverage data.coverage
, 'json'
bindEvents: ->
@@ -102,7 +104,11 @@ class MergeRequest
when "running", "pending"
$('.mr-state-widget').addClass("panel-warning")
-
+ showCiCoverage: (coverage) ->
+ cov_html = $('<span>')
+ cov_html.addClass('ci-coverage')
+ cov_html.text('Coverage ' + coverage + '%')
+ $('.ci_widget:visible').append(cov_html)
loadDiff: (event) ->
$.ajax
diff --git a/app/assets/stylesheets/sections/merge_requests.scss b/app/assets/stylesheets/sections/merge_requests.scss
index 3db6da2a9f9..acaad519778 100644
--- a/app/assets/stylesheets/sections/merge_requests.scss
+++ b/app/assets/stylesheets/sections/merge_requests.scss
@@ -113,6 +113,10 @@
margin-bottom: 0;
}
}
+
+ .ci-coverage {
+ float: right;
+ }
}
.merge-request-show-labels .label {
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 2667cc7a4f7..16bb3a5476e 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -150,8 +150,17 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
def ci_status
- status = @merge_request.source_project.ci_service.commit_status(merge_request.last_commit.sha)
- response = {status: status}
+ ci_service = @merge_request.source_project.ci_service
+ status = ci_service.commit_status(merge_request.last_commit.sha)
+
+ if ci_service.respond_to?(:commit_coverage)
+ coverage = ci_service.commit_coverage(merge_request.last_commit.sha)
+ end
+
+ response = {
+ status: status,
+ coverage: coverage
+ }
render json: response
end
diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb
index 0f327e75289..4a19ca2f655 100644
--- a/app/models/project_services/gitlab_ci_service.rb
+++ b/app/models/project_services/gitlab_ci_service.rb
@@ -31,8 +31,13 @@ class GitlabCiService < CiService
project_url + "/builds/#{sha}/status.json?token=#{token}"
end
- def commit_status sha
- response = HTTParty.get(commit_status_path(sha), verify: false)
+ def get_ci_build(sha)
+ @ci_builds ||= {}
+ @ci_builds[sha] ||= HTTParty.get(commit_status_path(sha), verify: false)
+ end
+
+ def commit_status(sha)
+ response = get_ci_build(sha)
if response.code == 200 and response["status"]
response["status"]
@@ -41,6 +46,14 @@ class GitlabCiService < CiService
end
end
+ def commit_coverage(sha)
+ response = get_ci_build(sha)
+
+ if response.code == 200 and response["coverage"]
+ response["coverage"]
+ end
+ end
+
def build_page sha
project_url + "/builds/#{sha}"
end