3 class ExtensionRegistryTest
extends MediaWikiTestCase
{
6 * @covers ExtensionRegistry::exportExtractedData
7 * @dataProvider provideExportExtractedDataGlobals
9 public function testExportExtractedDataGlobals( $desc, $before, $globals, $expected ) {
10 // Set globals for test
12 foreach ( $before as $key => $value ) {
13 // mw prefixed globals does not exist normally
14 if ( substr( $key, 0, 2 ) == 'mw' ) {
15 $GLOBALS[$key] = $value;
17 $this->setMwGlobals( $key, $value );
23 'globals' => $globals,
28 'autoloaderPaths' => []
30 $registry = new ExtensionRegistry();
31 $class = new ReflectionClass( 'ExtensionRegistry' );
32 $method = $class->getMethod( 'exportExtractedData' );
33 $method->setAccessible( true );
34 $method->invokeArgs( $registry, [ $info ] );
35 foreach ( $expected as $name => $value ) {
36 $this->assertArrayHasKey( $name, $GLOBALS, $desc );
37 $this->assertEquals( $value, $GLOBALS[$name], $desc );
40 // Remove mw prefixed globals
42 foreach ( $before as $key => $value ) {
43 if ( substr( $key, 0, 2 ) == 'mw' ) {
44 unset( $GLOBALS[$key] );
50 public static function provideExportExtractedDataGlobals() {
51 // "mwtest" prefix used instead of "$wg" to avoid potential conflicts
54 'Simple non-array values',
56 'mwtestFooBarConfig' => true,
57 'mwtestFooBarConfig2' => 'string',
60 'mwtestFooBarDefault' => 1234,
61 'mwtestFooBarConfig' => false,
64 'mwtestFooBarConfig' => true,
65 'mwtestFooBarConfig2' => 'string',
66 'mwtestFooBarDefault' => 1234,
70 'No global already set, simple array',
73 'mwtestDefaultOptions' => [
78 'mwtestDefaultOptions' => [
84 'Global already set, simple array',
86 'mwtestDefaultOptions' => [
92 'mwtestDefaultOptions' => [
98 'mwtestDefaultOptions' => [
106 'Global already set, 1d array that appends',
108 'mwAvailableRights' => [
114 'mwAvailableRights' => [
119 'mwAvailableRights' => [
127 'Global already set, array with integer keys',
129 'mwNamespacesFoo' => [
135 'mwNamespacesFoo' => [
138 ExtensionRegistry
::MERGE_STRATEGY
=> 'array_plus',
142 'mwNamespacesFoo' => [
150 'No global already set, $wgHooks',
157 'FooBarClass::onFooBarEvent'
159 ExtensionRegistry
::MERGE_STRATEGY
=> 'array_merge_recursive'
165 'FooBarClass::onFooBarEvent'
171 'Global already set, $wgHooks',
175 'FooBarClass::onFooBarEvent'
178 'FooBarClass::onBazBarEvent',
185 'BazBarClass::onFooBarEvent',
187 ExtensionRegistry
::MERGE_STRATEGY
=> 'array_merge_recursive',
193 'FooBarClass::onFooBarEvent',
194 'BazBarClass::onFooBarEvent',
197 'FooBarClass::onBazBarEvent',
203 'Global already set, $wgGroupPermissions',
205 'wgGroupPermissions' => [
210 'somethingtwo' => true,
215 'wgGroupPermissions' => [
221 'somethingtwo' => false,
222 'nonduplicated' => true,
224 ExtensionRegistry
::MERGE_STRATEGY
=> 'array_plus_2d',
228 'wgGroupPermissions' => [
236 'somethingtwo' => true,
238 'nonduplicated' => true,
244 'False local setting should not be overridden (T100767)',
246 'mwtestT100767' => false,
249 'mwtestT100767' => true,
252 'mwtestT100767' => false,
256 'test array_replace_recursive',
258 'mwtestJsonConfigs' => [
259 'JsonZeroConfig' => [
267 'mwtestJsonConfigs' => [
268 'JsonZeroConfig' => [
274 ExtensionRegistry
::MERGE_STRATEGY
=> 'array_replace_recursive',
278 'mwtestJsonConfigs' => [
279 'JsonZeroConfig' => [