MediaWikiUnitTestCase is intended to be used for "pure" unit tests, which mock dependencies in classes under test. To enforce that, we can block classes extending MediaWikiUnitTestCase from accessing MediaWikiServices. That goes a long way towards ensuring database, filesystem, network access etc are prevented in those types of tests.
Original report:
See T266389 for context.
For example, with AbuseFilter, there are tests in tests/phpunit/unit which access MediaWiki services and globals which are otherwise prohibited in MediaWikiUnitTestCase. If you try to run these locally with vendor/bin/phpunit they fail:
composer phpunit:unit -- --exclude-group Broken,ParserFuzz,Stub --stop-on-failure There was 1 error: 1) AbuseFilterParserTest::testDUNDEFINED with data set #6 ('norm(user_name) !== rmspecials('')') Error: Class 'Wikimedia\Equivset\Equivset' not found /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:1610 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:1677 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:1219 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:1016 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:938 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:880 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:869 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:825 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:815 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:780 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:756 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:727 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:695 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:661 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:607 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:533 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:442 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:423 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:404 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:226 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/includes/parser/AbuseFilterParser.php:244 /home/kostajh/src/mediawiki/core/extensions/AbuseFilter/tests/phpunit/unit/AbuseFilterParserTest.php:978 /home/kostajh/src/mediawiki/core/tests/phpunit/MediaWikiUnitTestCase.php:112
But, in CI no error is thrown with the same command: https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php72-noselenium-docker/42693/consoleFull#console-section-9
I don't understand how or why that is happening, but it's supposed to throw an error. IIRC there was a task around this although the only thing I find at the moment is T229220: Unit tests are not being run for extensions under PHPUnit 4.x (HHVM) which is tangential. Pinging @hashar for ideas or clues.