wiki.techinc.nl/tests/phpunit/structure/SpecialPageFatalTest.php

51 lines
1.2 KiB
PHP
Raw Normal View History

<?php
/**
* Test that runs against all registered special pages to make sure that regular
* execution of the special page does not cause a fatal error.
*
* UTSysop is used to run as much of the special page code as possible without
* actually knowing the details of the special page.
*
* @since 1.32
* @author Addshore
*/
class SpecialPageFatalTest extends MediaWikiTestCase {
public static function setUpBeforeClass() {
parent::setUpBeforeClass();
self::overrideMwServices();
}
public static function tearDownAfterClass() {
self::overrideMwServices();
parent::tearDownAfterClass();
}
public function provideSpecialPages() {
$specialPages = [];
foreach ( SpecialPageFactory::getNames() as $name ) {
$specialPages[$name] = [ SpecialPageFactory::getPage( $name ) ];
}
return $specialPages;
}
/**
* @dataProvider provideSpecialPages
*/
public function testSpecialPageDoesNotFatal( SpecialPage $page ) {
$executor = new SpecialPageExecutor();
$user = User::newFromName( 'UTSysop' );
try {
$executor->executeSpecialPage( $page, '', null, null, $user );
} catch ( Exception $e ) {
// Exceptions are allowed
}
// If the page fataled phpunit will have already died
$this->addToAssertionCount( 1 );
}
}