ockcyp/covers-validator

Validates @covers tags in PHPUnit tests

v1.6.0 2022-10-04 20:00 UTC

README

CI Coverage Status Scrutinizer Code Quality License Total Downloads

PHPUnit @covers tags validator

Why?

PHPUnit fails to generate a coverage report when tests have invalid @covers tags.

This tool allows you to determine the tests that have invalid @covers tags without you needing to run the coverage.

Usually coverage reports are run less often than the tests as they take a long time to run. This tool validates your @covers tags quicker than you run your tests.

Trying to @cover or @use not existing class or interface "NonExistentClass".
Trying to @cover or @use not existing method "ExistingClass::nonExistantMethod".

See: phpunit/issues/1758
Also see: phpunit/issues/1791

Abandoned alternative: dunkelfrosch/phpcoverfish

Getting Started

Prerequisites

  • PHP 7.1+
  • PHPUnit 6.0+

Installation

Composer

Recommended way of installing covers-validator is via Composer.

composer require --dev ockcyp/covers-validator

Phar

Download the covers-validator.phar asset from the latest release or any other release from the releases.

Then run using the following:

php covers-validator.phar

Note

The usage documentation assumes you installed covers-validator using Composer, so please replace any reference to "vendor/bin/covers-validator" with "php covers-validator.phar".

Note

Only releases since v0.3.0 can be used as a phar.

Older versions

Latest version of covers-validator supports PHP 7.1+ and PHPUnit 7+. Please use version 0.5 for older PHP and PHPUnit versions.

PHPUnit version Covers-validator version
< 6.0 0.5.x
>= 6.0 1.x

Usage

Run the validator using the following:

vendor/bin/covers-validator

Tip

The command returns exit code 1 when any of the covers tags are invalid. Use this to fail your builds.

Override configuration file

Give optional -c argument to load a particular PHPUnit configuration file:

vendor/bin/covers-validator -c tests/Fixtures/configuration.xml

Override PHPUnit bootstrap

Override the bootstrap value specified in PHPUnit configuration:

vendor/bin/covers-validator --bootstrap tests/bootstrap.php

Disable output

Disable output by providing the -q argument

vendor/bin/covers-validator -q

Adjust the verbosity:

Verbosity Shows
-v Valid tests
-vv Loaded configuration file
-vvv Test name before validation is done

Sample output

Normal verbosity

Invalid - OckCyp\CoversValidator\Tests\Fixtures\TwoTestCoveringNonExistentClassTest::testDummyTest

There were 1 test(s) with invalid @covers tags.

Maximum verbosity (debug)

Configuration file loaded: /home/omer/Projects/Personal/covers-validator/tests/Fixtures/configuration-all.xml

Validating OckCyp\CoversValidator\Tests\Fixtures\TwoTestCoveringExistingClassTest::testDummyTest...
Valid - OckCyp\CoversValidator\Tests\Fixtures\TwoTestCoveringExistingClassTest::testDummyTest
Validating OckCyp\CoversValidator\Tests\Fixtures\TwoTestCoveringNonExistentClassTest::testDummyTest...
Invalid - OckCyp\CoversValidator\Tests\Fixtures\TwoTestCoveringNonExistentClassTest::testDummyTest

There were 1 test(s) with invalid @covers tags.

Tests

To run the tests, execute:

vendor/bin/phpunit

Versioning

We use Semantic Versioning for versioning. For the versions available, see the releases or the CHANGELOG.md file.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

Acknowledgments