Merge "Add 'mw-anonuserlink' class for anonymous users"
[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 *
11 * @licence GNU GPL v2+
12 * @author Katie Filbert < aude.wiki@gmail.com >
13 */
14 class SpecialPageAliasTest extends MediaWikiTestCase {
15
16 /**
17 * @dataProvider validSpecialPageAliasesProvider
18 */
19 public function testValidSpecialPageAliases( $code, $specialPageAliases ) {
20 foreach ( $specialPageAliases as $specialPage => $aliases ) {
21 foreach ( $aliases as $alias ) {
22 $msg = "$specialPage alias '$alias' in $code is valid with no slashes";
23 $this->assertRegExp( '/^[^\/]*$/', $msg );
24 }
25 }
26 }
27
28 public function validSpecialPageAliasesProvider() {
29 $codes = array_keys( Language::fetchLanguageNames( 'mwfile' ) );
30
31 $data = array();
32
33 foreach ( $codes as $code ) {
34 $specialPageAliases = $this->getSpecialPageAliases( $code );
35
36 if ( $specialPageAliases !== array() ) {
37 $data[] = array( $code, $specialPageAliases );
38 }
39 }
40
41 return $data;
42 }
43
44 /**
45 * @param string $code
46 *
47 * @return array
48 */
49 protected function getSpecialPageAliases( $code ) {
50 $file = Language::getMessagesFileName( $code );
51
52 if ( is_readable( $file ) ) {
53 include $file;
54
55 if ( isset( $specialPageAliases ) && $specialPageAliases !== null ) {
56 return $specialPageAliases;
57 }
58 }
59
60 return array();
61 }
62
63 }