diff options
author | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
commit | fc7369835258467bf97eb64f184b93691f9a9fd5 (patch) | |
tree | daabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/tests/phpunit/suites/ExtensionsTestSuite.php |
first commit
Diffstat (limited to 'www/wiki/tests/phpunit/suites/ExtensionsTestSuite.php')
-rw-r--r-- | www/wiki/tests/phpunit/suites/ExtensionsTestSuite.php | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/suites/ExtensionsTestSuite.php b/www/wiki/tests/phpunit/suites/ExtensionsTestSuite.php new file mode 100644 index 00000000..02934fa7 --- /dev/null +++ b/www/wiki/tests/phpunit/suites/ExtensionsTestSuite.php @@ -0,0 +1,51 @@ +<?php +/** + * This test suite runs unit tests registered by extensions. + * See https://www.mediawiki.org/wiki/Manual:Hooks/UnitTestsList for details of + * how to register your tests. + */ + +class ExtensionsTestSuite extends PHPUnit_Framework_TestSuite { + public function __construct() { + parent::__construct(); + + $paths = []; + // Autodiscover extension unit tests + $registry = ExtensionRegistry::getInstance(); + foreach ( $registry->getAllThings() as $info ) { + $paths[] = dirname( $info['path'] ) . '/tests/phpunit'; + } + // Extensions can return a list of files or directories + Hooks::run( 'UnitTestsList', [ &$paths ] ); + foreach ( array_unique( $paths ) as $path ) { + if ( is_dir( $path ) ) { + // If the path is a directory, search for test cases. + // @since 1.24 + $suffixes = [ 'Test.php' ]; + $fileIterator = new File_Iterator_Facade(); + $matchingFiles = $fileIterator->getFilesAsArray( $path, $suffixes ); + $this->addTestFiles( $matchingFiles ); + } elseif ( file_exists( $path ) ) { + // Add a single test case or suite class + $this->addTestFile( $path ); + } + } + if ( !$paths ) { + $this->addTest( new DummyExtensionsTest( 'testNothing' ) ); + } + } + + public static function suite() { + return new self; + } +} + +/** + * Needed to avoid warnings like 'No tests found in class "ExtensionsTestSuite".' + * when no extensions with tests are used. + */ +class DummyExtensionsTest extends MediaWikiTestCase { + public function testNothing() { + $this->assertTrue( true ); + } +} |