We have coverage reports! https://doc.wikimedia.org/cover-extensions/MobileFrontend/
Eventually, we'd like CI to complain when unit test coverage drops. To do this we need to annotate our code so MediaWiki core knows about it.
We're running coverage tests with `forceCoversAnnotation=true`option. It means that all PHPUnit tests require `@covers` statement, otherwise coverage report will not include those unit tests. Because in near future we will enable code coverage reports for MobileFrontend extension (Task: T151333) it would be nice to fix it.
Additionally we should add PHPCS check that every unit tests must have `@covers`/`@coversNothing`/`@coversDefaultClass` annotation so we do not end up with same issue as we already solved similar problem some time ago (Task: T102006 ).
```
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/devices/DeviceDetectorServiceTest.php
-------------------------------------------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
-------------------------------------------------------------------------------------------------------
47 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
56 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
69 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
-------------------------------------------------------------------------------------------------------
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/devices/UADeviceDetectorTest.php
-------------------------------------------------------------------------------------------------------------
FOUND 5 ERRORS AFFECTING 5 LINES
-------------------------------------------------------------------------------------------------------------
153 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
163 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
170 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
193 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
203 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
-------------------------------------------------------------------------------------------------------------
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/devices/AMFDeviceDetectorTest.php
------------------------------------------------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
------------------------------------------------------------------------------------------------------------
34 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
58 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
79 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
------------------------------------------------------------------------------------------------------------
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/devices/CustomHeaderDeviceDetectorTest.php
-----------------------------------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 2 LINES
-----------------------------------------------------------------------------------------------------------
40 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
46 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
-----------------------------------------------------------------------------------------------------------
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/devices/DeviceDetectorServiceIntegrationTest.php
-----------------------------------------------------------------------------------------------------------------
FOUND 5 ERRORS AFFECTING 5 LINES
-----------------------------------------------------------------------------------------------------------------
55 | ERROR | Missing PHPUnit code coverage annotation.(MissingCovers.Missing)
64 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
71 | ERROR | Missing PHPUnit code coverage annotation.(MissingCovers.Missing)
88 | ERROR | Missing PHPUnit code coverage annotation.(MissingCovers.Missing)
102 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
-----------------------------------------------------------------------------------------------------------------
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/MobileContextTest.php
-------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------
558 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
-------------------------------------------------------------------------------------------------------------
FILE: /vagrant/mediawiki/extensions/MobileFrontend/tests/phpunit/MobileFrontend.hooksTest.php
-------------------------------------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------------
188 | ERROR | Missing PHPUnit code coverage annotation. (MissingCovers.Missing)
-------------------------------------------------------------------------------------------------------------
Time: 10.6 secs; Memory: 21.75Mb
```
In total there are 21 test cases where we need to check which functions are tested and add proper `@covers` statements.
After fixing those it would be nice to include [[ https://github.com/WordPoints/dev-lib/blob/develop/phpcs/WordPoints/Sniffs/PHPUnit/MissingCoversSniff.php | MissingCoversSniff ]] to phpcs config.