From e86bde2331e6629662d59f270af5cd35c45fc40d Mon Sep 17 00:00:00 2001 From: Miguel Savignano Date: Sat, 2 Nov 2019 21:50:16 +0100 Subject: [PATCH] generate coverage report --- lib/coverage_report.rb | 27 +++++++++++++++++++++ lib/index.rb | 14 +++++------ spec/fixtures/output/annotations.json | 34 --------------------------- 3 files changed, 34 insertions(+), 41 deletions(-) create mode 100644 lib/coverage_report.rb delete mode 100644 spec/fixtures/output/annotations.json diff --git a/lib/coverage_report.rb b/lib/coverage_report.rb new file mode 100644 index 0000000..f8af67e --- /dev/null +++ b/lib/coverage_report.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class CoverageReport + def self.generate(type, report_path, data) + if type == 'simplecov' + simplecov(report_path, data) + elsif type == 'jest' + jest(report_path, data) + else + raise 'InvalidCoverageReportType' + end + end + + def self.simplecov(report_path, data) + report = JSON.parse(report_path) + minumum_percent = data[:min] + covered_percent = report.dig('result', 'covered_percent') + { 'lines' => { 'covered_percent' => covered_percent, 'minumum_percent' => minumum_percent } } + end + + def self.jest(report_path, data) + report = JSON.parse(report_path) + minumum_percent = data[:min] + covered_percent = report.dig('result', 'covered_percent') + { 'lines' => { 'covered_percent' => covered_percent, 'minumum_percent' => minumum_percent } } + end +end diff --git a/lib/index.rb b/lib/index.rb index 4638fc3..e888441 100644 --- a/lib/index.rb +++ b/lib/index.rb @@ -6,6 +6,7 @@ require 'time' require_relative './report_adapter' require_relative './github_check_run_service' require_relative './github_client' +require_relative './coverage_report' def read_json(path) JSON.parse(File.read(path)) @@ -14,16 +15,15 @@ end @event_json = read_json(ENV['GITHUB_EVENT_PATH']) if ENV['GITHUB_EVENT_PATH'] @github_data = { sha: ENV['GITHUB_SHA'], - token: ENV['GITHUB_TOKEN'], + token: ENV['INPUT_TOKEN'], owner: ENV['GITHUB_REPOSITORY_OWNER'] || @event_json.dig('repository', 'owner', 'login'), repo: ENV['GITHUB_REPOSITORY_NAME'] || @event_json.dig('repository', 'name') } -@report = - if ENV['REPORT_PATH'] - read_json(ENV['REPORT_PATH']) - else - Dir.chdir(ENV['GITHUB_WORKSPACE']) { JSON.parse(`brakeman -f json`) } - end +@coverage_type = ENV['INPUT_TYPE'] +@report_path = ENV['INPUT_RESULT_PATH'] +@data = { min: ENV['INPUT_MIN_COVERAGE'] } + +@report = CoverageReport.generate(@coverage_type, @report_path, @data) GithubCheckRunService.new(@report, @github_data, ReportAdapter).run diff --git a/spec/fixtures/output/annotations.json b/spec/fixtures/output/annotations.json deleted file mode 100644 index 4d53208..0000000 --- a/spec/fixtures/output/annotations.json +++ /dev/null @@ -1,34 +0,0 @@ -[ - { - "path": "app/controllers/posts_controller.rb", - "start_line": 29, - "end_line": 29, - "annotation_level": "warning", - "title": "High - Evaluation", - "message": "User input in eval" - }, - { - "path": "app/controllers/posts_controller.rb", - "start_line": 18, - "end_line": 18, - "annotation_level": "warning", - "title": "High - MassAssignment", - "message": "Parameters should be whitelisted for mass assignment" - }, - { - "path": "app/controllers/posts_controller.rb", - "start_line": 19, - "end_line": 19, - "annotation_level": "warning", - "title": "High - MassAssignment", - "message": "Parameters should be whitelisted for mass assignment" - }, - { - "path": "app/controllers/posts_controller.rb", - "start_line": 13, - "end_line": 13, - "annotation_level": "warning", - "title": "Medium - SQL", - "message": "Possible SQL injection" - } -]