fgrosse / go-coverage-report Goto Github PK
View Code? Open in Web Editor NEWA CLI tool and GitHub Action to post Go code coverage reports as comment to your pull requests.
License: BSD 3-Clause "New" or "Revised" License
A CLI tool and GitHub Action to post Go code coverage reports as comment to your pull requests.
License: BSD 3-Clause "New" or "Revised" License
We're using this action on several private repositories and it is working great so far. Thanks.
However, I made a PR today that only changed a single _test.go
file and no coverage report was added to the PR. The changed test file was noticed by the first steps of the action but seems to get filtered away sometime later. Here are the logs (somewhat redacted).
Run tj-actions/changed-files@aa08304bd477b800d468db44fe10f6c61f7f7b11 <snip>
changed-files
Warning: The current working directory is not inside a git repository: <snip>
Using GitHub's REST API to get changed files
Getting changed files from GitHub API...
Found 1 changed files from GitHub API
All Done!
changed-files-patterns
All Done!
Run $GITHUB_ACTION_PATH/scripts/github-action.sh <snip>
Download code coverage results from current run
Download code coverage results from target branch
Compare code coverage results
+ go-coverage-report -root=<snip> -trim= .github/outputs/old-coverage.txt .github/outputs/new-coverage.txt .github/outputs/all_changed_files.json
Skipping report since there are no changed files
+ end_group
Notice: No coverage report to comment
It may happen that the uploaded code coverage artifact has expired already when we run the action. This is likely on repositories which do not receive changes frequently and thus, when a PR is opened, the code coverage from main
will be missing.
While trying out this action, I'm encountering the error: "GraphQL: Resource not accessible by integration (addComment)".
I tried passing the GITHUB_TOKEN
environment variable, setting the pull-requests: write
permission on the workflow rather than only the job, and adding the issues: write
permission, but so far no luck. My best guess is that the gh
command is running in the context of your repository instead of my own.
Here's an example run: https://github.com/regclient/regclient/actions/runs/8484759635/job/23248287252?pr=706
(Note that I have continue-on-error: true
defined on the job so that it always shows as successful.)
Hello! Great action, but I noticed small issue that breaks my setup :D
You are doing this in action:
gh run list --status=success --branch=main '--workflow=Lint and Test' --event=push --json=databaseId --limit=1 -q '.[] | .databaseId'
However in setup I am not using I only run job on cron-schedule, so I do not have --event=push
there at all. Is this option configurable maybe?
PS: I know I will lose some accuracy here because of that ๐
The action is failing for me, apparently because there are no artifacts available in the target branch (not surprising because this is the first attempt to run it).
Download code coverage results from target branch
++ gh run list --status=success --branch=main --workflow=Build --event=push --json=databaseId --limit=1 -q '.[] | .databaseId'
+ LAST_SUCCESSFUL_RUN_ID=8953089596
+ '[' -z 8953089596 ']'
+ gh run download 8953089596 --name=code-coverage --dir=.github/outputs
no valid artifacts found to download
Error: Process completed with exit code 1.
Is there some set up/configuration step that I've missed?
Thanks,
Rob.
Hello! I decided to try your Action, unfortunatelly for some reason it always shows 0
on every touched file.
This is how I am using your action. I have this 3 steps in 1 job:
- name: generate test coverage
run: go test -cover -coverprofile=coverage.txt ./...
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage
path: coverage.txt
retention-days: 2
- uses: fgrosse/[email protected]
if: ${{ github.event_name == 'pull_request' }}
with:
coverage-artifact-name: "code-coverage"
coverage-file-name: "coverage.txt"
As title says, when I run the provided sample workflow as part of my CI pipeline a comment is successfully generated, however, the comment does not display the correct information.
I also cloned the go-coverage-report repo (Robert-MacWha#1), removed some tests, and ran the CI workflow. This also resulted in no coverage info being displayed in the comment. Interestingly, when I logged the code coverage results, it seemed to correctly generate the oldCov
and newCov
structs.
+ go-coverage-report -root=github.com/Robert-MacWha/go-coverage-report -trim=github.com/fgrosse/go-coverage-report/ .github/outputs/old-coverage.txt .github/outputs/new-coverage.txt .github/outputs/all_changed_files.json
Old Coverage: &{Files:map[github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/changed_files.go:0xc00006e050 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/coverage.go:0xc00006e0a0 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/main.go:0xc00006e0f0 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/profile.go:0xc00006e140 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/report.go:0xc00006e190] TotalStmt:336 CoveredStmt:200 MissedStmt:136}
New Coverage: &{Files:map[github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/changed_files.go:0xc00006e1e0 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/coverage.go:0xc00006e230 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/main.go:0xc00006e280 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/profile.go:0xc00006e2d0 github.com/fgrosse/go-coverage-report/cmd/go-coverage-report/report.go:0xc00006e320] TotalStmt:339 CoveredStmt:85 MissedStmt:254}
Changed Files: [github.com/Robert-MacWha/go-coverage-report/cmd/go-coverage-report/coverage_test.go github.com/Robert-MacWha/go-coverage-report/cmd/go-coverage-report/main.go github.com/Robert-MacWha/go-coverage-report/cmd/go-coverage-report/report_test.go]
I'll see if I can fix things, if so will make a quick PR.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.