Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/permafrost-dev/coverage-check
Check a project's code coverage, optionally enforcing a minimum value
https://github.com/permafrost-dev/coverage-check
code-coverage code-quality continuous-integration test-automation testing
Last synced: 23 days ago
JSON representation
Check a project's code coverage, optionally enforcing a minimum value
- Host: GitHub
- URL: https://github.com/permafrost-dev/coverage-check
- Owner: permafrost-dev
- License: mit
- Created: 2021-07-02T22:07:09.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-25T21:02:19.000Z (about 2 months ago)
- Last Synced: 2024-12-06T15:52:42.339Z (about 1 month ago)
- Topics: code-coverage, code-quality, continuous-integration, test-automation, testing
- Language: PHP
- Homepage:
- Size: 158 KB
- Stars: 17
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# coverage-check
---
Display the code coverage for a project using a clover.xml file, optionally enforcing a minimum code coverage percentage.
This package is designed to be used in your CI/CD or automated testing process _(i.e., using GitHub Workflows)_.
The concept for this package is based on [this article](https://ocramius.github.io/blog/automated-code-coverage-check-for-github-pull-requests-with-travis/).
---
``
> Note on PHP 7.x support:
> If you are using PHP 7.x, use the 1.x version of this package.
>## Installation
```bash
composer require permafrost-dev/coverage-check --dev
```## Usage
Specify a valid clover.xml file and (optionally) a minimum coverage percentage to require using the `--require` or `-r` flag. A percentage can be either a whole number (integer) or a decimal (float).
If you specify the `--require/-r` flag, the check will fail if coverage percent is below the value you provide, and the process exit code will be non-zero.
If you don't specify the `--require/-r` flag, only the percentage of code coverage will be displayed and the exit code will always be zero.
```bash
./vendor/bin/coverage-check clover.xml
./vendor/bin/coverage-check clover.xml --require=50
./vendor/bin/coverage-check clover.xml -r 80.5
./vendor/bin/coverage-check clover.xml -m statement -r 75
./vendor/bin/coverage-check clover.xml --precision=1
```## Available Options
| Option | Description |
| --- | --- |
| `--coverage-only` or `-C` | Only display the code coverage value |
| `--metric` or `-m` `` | Use the specified metric field for calculating coverage. Valid values are `element` _(default)_, `method`, or `statement` |
| `--precision` or `-p` `` | Use the specified precision when calculating the code coverage percentage, where `` is an integer _(default: 4)_ |
| `--require` or `-r` `` | Enforce a minimum code coverage value, where `` is an integer or decimal value |## Metric fields
The field that is used to calculate code coverage can be specified using the `--metric=` or `-m ` option.
Valid field names are `element` _(the default)_, `statement`, and `method`.
## Generating clover-format coverage files
PHPUnit can generate coverage reports in clover format:
```bash
./vendor/bin/phpunit --coverage-clover clover.xml
```## Sample Github Workflow
```yaml
name: run-testson: [push, pull_request]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest]
php: [8.1, 8.0, 7.4, 7.3]name: P${{ matrix.php }} - ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v3- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, intl, iconv, fileinfo
coverage: pcov- name: Setup problem matchers
run: |
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"- name: Install dependencies
run: composer update --prefer-stable --prefer-dist --no-interaction- name: Execute tests
run: ./vendor/bin/phpunit --coverage-clover clover.xml- name: Enforce 75% code coverage
run: ./vendor/bin/coverage-check clover.xml --require=75 --precision=2
```## Testing
```bash
./vendor/bin/phpunit
```## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [Patrick Organ](https://github.com/patinthehat)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.