3 use PHPUnit\Framework\TestSuite
;
4 use SebastianBergmann\FileIterator\Facade
;
7 * Test suite that runs skins unit tests (the `skins:unit` suite).
9 class SkinsUnitTestSuite
extends TestSuite
{
10 public function __construct() {
11 parent
::__construct();
13 if ( !defined( 'MW_PHPUNIT_EXTENSIONS_PATHS' ) ) {
14 throw new RuntimeException( 'The PHPUnit bootstrap was not loaded' );
17 foreach ( MW_PHPUNIT_EXTENSIONS_PATHS
as $path ) {
18 // Note that we don't load settings, so we expect to find skins in their
20 // Standardize directory separators for Windows compatibility.
21 if ( str_contains( strtr( $path, '\\', '/' ), '/skins/' ) ) {
22 $paths[] = "$path/tests/phpunit/unit";
25 foreach ( array_unique( $paths ) as $path ) {
26 $suffixes = [ 'Test.php' ];
27 $fileIterator = new Facade();
28 $matchingFiles = $fileIterator->getFilesAsArray( $path, $suffixes );
29 $this->addTestFiles( $matchingFiles );
33 public static function suite() {