/covers-validator

Validates @covers tags in PHPUnit tests

Primary LanguagePHPMIT LicenseMIT

ockcyp/covers-validator

Build Status Coverage Status Scrutinizer Code Quality License

PHPUnit @covers tags validator

PHPUnit fails to generate 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 it takes a long time to run. This tool validates your @covers tags quicker than you run your tests.

Also see: dunkelfrosch/phpcoverfish

Why?

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

Installation

composer require --dev ockcyp/covers-validator

PHPUnit versions

Latest version of covers-validator supports PHP 7.x and PHPUnit 6 and above. 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

Install using the following for version 0.5:

composer require --dev ockcyp/covers-validator "^0.5"

Usage

vendor/bin/covers-validator

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

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

Override bootstrap specified in PHPUnit configuration:

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

Disable output by providing -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.

Tip: Command gives exit code 1 when any of the covers tags are invalid. Use this to fail your builds.

Tests

To run the tests, execute:

vendor/bin/phpunit