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=trueoption. 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 MissingCoversSniff to phpcs config.