Exclude redirects from Special:Fewestrevisions
[lhc/web/wiklou.git] / tests / phpunit / languages / SpecialPageAliasTest.php
1 <?php
2
3 /**
4 * Verifies that special page aliases are valid, with no slashes.
5 *
6 * @group Language
7 * @group SpecialPageAliases
8 * @group SystemTest
9 * @group medium
10 * @todo This should be a structure test
11 *
12 * @author Katie Filbert < aude.wiki@gmail.com >
13 */
14 class SpecialPageAliasTest extends \MediaWikiUnitTestCase {
15
16 /**
17 * @coversNothing
18 * @dataProvider validSpecialPageAliasesProvider
19 */
20 public function testValidSpecialPageAliases( $code, $specialPageAliases ) {
21 foreach ( $specialPageAliases as $specialPage => $aliases ) {
22 foreach ( $aliases as $alias ) {
23 $msg = "$specialPage alias '$alias' in $code is valid with no slashes";
24 $this->assertRegExp( '/^[^\/]*$/', $msg );
25 }
26 }
27 }
28
29 public function validSpecialPageAliasesProvider() {
30 $codes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
31
32 $data = [];
33
34 foreach ( $codes as $code ) {
35 $specialPageAliases = $this->getSpecialPageAliases( $code );
36
37 if ( $specialPageAliases !== [] ) {
38 $data[] = [ $code, $specialPageAliases ];
39 }
40 }
41
42 return $data;
43 }
44
45 /**
46 * @param string $code
47 *
48 * @return array
49 */
50 protected function getSpecialPageAliases( $code ) {
51 $file = Language::getMessagesFileName( $code );
52
53 if ( is_readable( $file ) ) {
54 include $file;
55
56 if ( isset( $specialPageAliases ) && $specialPageAliases !== null ) {
57 return $specialPageAliases;
58 }
59 }
60
61 return [];
62 }
63
64 }