From c36726e340e7b04b3f895ed8503f68c3a3460376 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Sun, 15 Dec 2019 10:13:31 +0100 Subject: [PATCH 01/20] feat(diffs): add coverage visualisation MVC to MR diff view --- .../javascripts/diffs/components/app.vue | 18 ++++++ .../diffs/components/diff_content.vue | 6 ++ .../diffs/components/diff_expansion_cell.vue | 2 +- .../diffs/components/diff_file.vue | 6 ++ .../components/inline_diff_comment_row.vue | 2 +- .../components/inline_diff_table_row.vue | 15 +++++ .../diffs/components/inline_diff_view.vue | 15 +++++ .../components/parallel_diff_comment_row.vue | 2 +- .../parallel_diff_expansion_row.vue | 2 +- .../components/parallel_diff_table_row.vue | 15 +++++ .../diffs/components/parallel_diff_view.vue | 15 +++++ app/assets/javascripts/diffs/index.js | 2 + app/assets/javascripts/diffs/store/actions.js | 6 ++ .../javascripts/diffs/store/mutations.js | 2 + app/assets/stylesheets/pages/diff.scss | 6 ++ .../projects/merge_requests_controller.rb | 8 +++ .../projects/pipelines_controller.rb | 27 +++++++++ app/models/ci/build.rb | 8 +++ app/models/ci/job_artifact.rb | 10 +++- app/models/ci/pipeline.rb | 8 +++ app/models/merge_request.rb | 12 ++++ .../projects/merge_requests/show.html.haml | 1 + config/routes/merge_requests.rb | 1 + config/routes/project.rb | 1 + lib/gitlab/ci/config/entry/reports.rb | 3 +- lib/gitlab/ci/parsers.rb | 3 +- lib/gitlab/ci/parsers/coverage/clover.rb | 56 +++++++++++++++++++ lib/gitlab/ci/reports/coverage_reports.rb | 15 +++++ 28 files changed, 260 insertions(+), 7 deletions(-) create mode 100644 lib/gitlab/ci/parsers/coverage/clover.rb create mode 100644 lib/gitlab/ci/reports/coverage_reports.rb diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index 77cd2afc10617a..a28d2a76cacec7 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -50,6 +50,10 @@ export default { type: String, required: true, }, + endpointCoverage: { + type: String, + required: false, + }, projectPath: { type: String, required: true, @@ -94,6 +98,7 @@ export default { parseInt(localStorage.getItem(TREE_LIST_WIDTH_STORAGE_KEY), 10) || INITIAL_TREE_WIDTH; return { + diffCoverageData: {}, treeWidth, diffFilesLength: 0, }; @@ -169,6 +174,7 @@ export default { endpoint: this.endpoint, endpointMetadata: this.endpointMetadata, endpointBatch: this.endpointBatch, + endpointCoverage: this.endpointCoverage, projectPath: this.projectPath, dismissEndpoint: this.dismissEndpoint, showSuggestPopover: this.showSuggestPopover, @@ -218,6 +224,7 @@ export default { 'fetchDiffFiles', 'fetchDiffFilesMeta', 'fetchDiffFilesBatch', + 'fetchDiffCoverage', 'startRenderDiffsQueue', 'assignDiscussionsToDiff', 'setHighlightedRow', @@ -292,6 +299,16 @@ export default { }); } + if (this.endpointCoverage) { + this.fetchDiffCoverage() + .then((response) => { + this.diffCoverageData = response.data.coverage; + }) + .catch(() => { + createFlash(__('Something went wrong on our end. Please try again!')); + }); + } + if (!this.isNotesFetched) { eventHub.$emit('fetchNotesData'); } @@ -406,6 +423,7 @@ export default { :file="file" :help-page-path="helpPagePath" :can-current-user-fork="canCurrentUserFork" + :coverage="diffCoverageData" /> diff --git a/app/assets/javascripts/diffs/components/diff_content.vue b/app/assets/javascripts/diffs/components/diff_content.vue index a5ffa84e3fbe0e..2aab01f5389ad7 100644 --- a/app/assets/javascripts/diffs/components/diff_content.vue +++ b/app/assets/javascripts/diffs/components/diff_content.vue @@ -41,6 +41,10 @@ export default { required: false, default: '', }, + coverage: { + type: Object, + required: false, + }, }, computed: { ...mapState({ @@ -107,12 +111,14 @@ export default { :diff-file="diffFile" :diff-lines="diffFile.highlighted_diff_lines || []" :help-page-path="helpPagePath" + :coverage="coverage" /> diff --git a/app/assets/javascripts/diffs/components/diff_expansion_cell.vue b/app/assets/javascripts/diffs/components/diff_expansion_cell.vue index 4eae2e09c08dd7..46ed76450c4756 100644 --- a/app/assets/javascripts/diffs/components/diff_expansion_cell.vue +++ b/app/assets/javascripts/diffs/components/diff_expansion_cell.vue @@ -54,7 +54,7 @@ export default { colspan: { type: Number, required: false, - default: 3, + default: 4, }, }, computed: { diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue index 8babc05f1cea2e..f213bb35f83519 100644 --- a/app/assets/javascripts/diffs/components/diff_file.vue +++ b/app/assets/javascripts/diffs/components/diff_file.vue @@ -1,3 +1,4 @@ +