Compare commits

..

1 Commits

Author SHA1 Message Date
miguemasx
0236048e13 add logging 2020-03-16 22:29:28 +01:00
8 changed files with 20 additions and 42 deletions

View File

@ -1,9 +1,5 @@
# Changelog # Changelog
## v1.2.0
- Added the coverage percent to result title on Check [#4](https://github.com/devmasx/coverage-check-action/pull/4)
## v1.1.0 ## v1.1.0
- Lcov - Lcov

View File

@ -2,43 +2,28 @@
A GitHub Action that check minimum coverage percentage! A GitHub Action that check minimum coverage percentage!
This action requires a Github token with `checks:write` scope to allow create the check run using the Github API v3.
But no need to generate any new token, you can use the Github action token (`${{ github.token }}`)
### Usage ### Usage
#### Lcov #### Lcov
```yml ```yml
- uses: devmasx/coverage-check-action@v1.2.0 - uses: devmasx/coverage-check-action@v1.1.0
with: with:
type: lcov type: lcov
result_path: coverage/example.lcov result_path: coverage/example.lcov
min_coverage: 90 min_coverage: 90
token: ${{ github.token }} token: ${{secrets.GITHUB_TOKEN}}
``` ```
#### [Simplecov](https://github.com/colszowka/simplecov) #### [Simplecov](https://github.com/colszowka/simplecov)
```yml ```yml
- uses: devmasx/coverage-check-action@v1.2.0 - uses: devmasx/coverage-check-action@v1.1.0
with: with:
type: simplecov type: simplecov
result_path: coverage/.last_run.json result_path: coverage/.last_run.json
min_coverage: 90 min_coverage: 90
token: ${{ github.token }} token: ${{secrets.GITHUB_TOKEN}}
```
#### Report name
```yml
- uses: devmasx/coverage-check-action@v1.2.0
with:
type: lcov
result_path: coverage/example.lcov
min_coverage: 90
token: ${{ github.token }}
report_name: "My Github Action Check Name"
``` ```
## Screenshots ## Screenshots

View File

@ -15,9 +15,6 @@ inputs:
min_coverage: min_coverage:
description: "Minimum coverage" description: "Minimum coverage"
default: "80" default: "80"
report_name:
description: "Name of the github action check"
default: "Coverage"
result_path: result_path:
description: "Json with coverage result" description: "Json with coverage result"
required: true required: true

View File

@ -35,8 +35,9 @@ class CoverageReport
end end
def execute_lcov_parse(report_path) def execute_lcov_parse(report_path)
puts "Report path: #{report_path}"
bin_path = "#{File.dirname(__FILE__)}/../bin" bin_path = "#{File.dirname(__FILE__)}/../bin"
JSON.parse(`node #{bin_path}/lcov-parse.js #{report_path}`) JSON.parse(`node #{bin_path}/lcov-parse.js #{report_path}` || {})
end end
def read_json(path) def read_json(path)

View File

@ -1,10 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
class GithubCheckRunService class GithubCheckRunService
def initialize(report, github_data, report_name, report_adapter) CHECK_NAME = 'Coverage'
def initialize(report, github_data, report_adapter)
@report = report @report = report
@github_data = github_data @github_data = github_data
@report_name = report_name
@report_adapter = report_adapter @report_adapter = report_adapter
@client = GithubClient.new(@github_data[:token], user_agent: 'coverage-action') @client = GithubClient.new(@github_data[:token], user_agent: 'coverage-action')
end end
@ -17,7 +18,6 @@ class GithubCheckRunService
@summary = @report_adapter.summary(@report) @summary = @report_adapter.summary(@report)
@annotations = @report_adapter.annotations(@report) @annotations = @report_adapter.annotations(@report)
@conclusion = @report_adapter.conslusion(@report) @conclusion = @report_adapter.conslusion(@report)
@percent = @report_adapter.lines_covered_percent(@report)
@client.patch( @client.patch(
"#{endpoint_url}/#{id}", "#{endpoint_url}/#{id}",
@ -33,7 +33,7 @@ class GithubCheckRunService
def create_check_payload def create_check_payload
{ {
name: @report_name, name: CHECK_NAME,
head_sha: @github_data[:sha], head_sha: @github_data[:sha],
status: 'in_progress', status: 'in_progress',
started_at: Time.now.iso8601 started_at: Time.now.iso8601
@ -42,13 +42,13 @@ class GithubCheckRunService
def update_check_payload def update_check_payload
{ {
name: @report_name, name: CHECK_NAME,
head_sha: @github_data[:sha], head_sha: @github_data[:sha],
status: 'completed', status: 'completed',
completed_at: Time.now.iso8601, completed_at: Time.now.iso8601,
conclusion: @conclusion, conclusion: @conclusion,
output: { output: {
title: "#{@report_name} #{@percent}%", title: CHECK_NAME,
summary: @summary, summary: @summary,
annotations: @annotations annotations: @annotations
} }

View File

@ -17,14 +17,14 @@ end
sha: ENV['GITHUB_SHA'], sha: ENV['GITHUB_SHA'],
token: ENV['INPUT_TOKEN'], token: ENV['INPUT_TOKEN'],
owner: ENV['GITHUB_REPOSITORY_OWNER'] || @event_json.dig('repository', 'owner', 'login'), owner: ENV['GITHUB_REPOSITORY_OWNER'] || @event_json.dig('repository', 'owner', 'login'),
repo: ENV['GITHUB_REPOSITORY_NAME'] || @event_json.dig('repository', 'name'), repo: ENV['GITHUB_REPOSITORY_NAME'] || @event_json.dig('repository', 'name')
} }
@coverage_type = ENV['INPUT_TYPE'] @coverage_type = ENV['INPUT_TYPE']
@report_path = ENV['INPUT_RESULT_PATH'] @report_path = ENV['INPUT_RESULT_PATH']
@report_name = ENV['INPUT_REPORT_NAME']
@data = { min: ENV['INPUT_MIN_COVERAGE'] } @data = { min: ENV['INPUT_MIN_COVERAGE'] }
puts "** #{@report_path} #{@data[:min]} #{@coverage_type}}"
@report = CoverageReport.generate(@coverage_type, @report_path, @data) @report = CoverageReport.generate(@coverage_type, @report_path, @data)
GithubCheckRunService.new(@report, @github_data, @report_name, ReportAdapter).run GithubCheckRunService.new(@report, @github_data, ReportAdapter).run

View File

@ -18,16 +18,16 @@ class ReportAdapter
[] []
end end
def lines_covered_percent(report)
@lines_covered_percent ||= report.dig('lines', 'covered_percent')
end
private private
def table_head def table_head
"| Type | covered | minimum |\n| ----- | ------- | ------- |" "| Type | covered | minimum |\n| ----- | ------- | ------- |"
end end
def lines_covered_percent(report)
@lines_covered_percent ||= report.dig('lines', 'covered_percent')
end
def lines_minimum_percent(report) def lines_minimum_percent(report)
@lines_minimum_percent ||= report.dig('lines', 'minumum_percent') @lines_minimum_percent ||= report.dig('lines', 'minumum_percent')
end end

View File

@ -7,8 +7,7 @@ describe GithubCheckRunService do
{ 'lines' => { 'covered_percent' => 80, 'minumum_percent' => 80 } } { 'lines' => { 'covered_percent' => 80, 'minumum_percent' => 80 } }
end end
let(:github_data) { { sha: 'sha', token: 'token', owner: 'owner', repo: 'repository_name' } } let(:github_data) { { sha: 'sha', token: 'token', owner: 'owner', repo: 'repository_name' } }
let(:report_name) { 'Coverage' } let(:service) { GithubCheckRunService.new(report, github_data, ReportAdapter) }
let(:service) { GithubCheckRunService.new(report, github_data, report_name, ReportAdapter) }
it '#run' do it '#run' do
stub_request(:any, 'https://api.github.com/repos/owner/repository_name/check-runs/id') stub_request(:any, 'https://api.github.com/repos/owner/repository_name/check-runs/id')