Файловый менеджер - Редактировать - /var/www/html/Settings.zip
Ðазад
PK ! ��� � WikiFarmSettingsLoaderTest.phpnu �Iw�� <?php namespace MediaWiki\Tests\Unit\Settings; use MediaWiki\Config\HashConfig; use MediaWiki\MainConfigNames; use MediaWiki\Registration\ExtensionRegistry; use MediaWiki\Settings\Config\ArrayConfigBuilder; use MediaWiki\Settings\Config\PhpIniSink; use MediaWiki\Settings\SettingsBuilder; use MediaWiki\Settings\WikiFarmSettingsLoader; use MediaWikiUnitTestCase; use PHPUnit\Framework\MockObject\MockObject; /** * @covers \MediaWiki\Settings\WikiFarmSettingsLoader */ class WikiFarmSettingsLoaderTest extends MediaWikiUnitTestCase { /** @var array|null */ private $originalServerVars = null; /** * @before */ public function serverVarsSetUp() { $this->originalServerVars = $_SERVER; } /** * @after */ public function serverVarsTearDown() { $_SERVER = $this->originalServerVars; } /** * @param array $params * @return SettingsBuilder */ private function newSettingsBuilder( $params = [] ): SettingsBuilder { return new SettingsBuilder( __DIR__, $params['extensionRegistry'] ?? $this->createMock( ExtensionRegistry::class ), $params['configBuilder'] ?? new ArrayConfigBuilder(), $params['phpIniSink'] ?? $this->createMock( PhpIniSink::class ), $params['cache'] ?? null ); } /** * @return SettingsBuilder|MockObject */ private function fakeSettingsBuilder(): SettingsBuilder { $config = [ MainConfigNames::WikiFarmSettingsDirectory => 'test', MainConfigNames::WikiFarmSettingsExtension => 'yaml', ]; $mock = $this->createMock( SettingsBuilder::class ); $mock->method( 'getConfig' )->willReturn( new HashConfig( $config ) ); $mock->method( 'fileExists' )->willReturn( true ); return $mock; } public static function provideWikiFarmSettings() { yield [ [ 'WikiFarmSettingsDirectory' => __DIR__ . '/fixtures/sites', 'WikiFarmSettingsExtension' => 'yaml', ], 'alpha', [ 'SiteName' => 'Alpha Wiki' ] ]; yield [ [ 'WikiFarmSettingsDirectory' => __DIR__ . '/fixtures/sites', 'WikiFarmSettingsExtension' => 'json', ], 'beta', [ 'SiteName' => 'Beta Wiki' ] ]; } /** * @param array $config * @param string $detect * @param array $expected * * @dataProvider provideWikiFarmSettings */ public function testLoadWikiFarmSettings( $config, $detect, $expected ) { $settings = $this->newSettingsBuilder(); $settings->putConfigValues( $config ); $_SERVER['MW_WIKI_NAME'] = $detect; $loader = $this->newLoader( $settings ); $loader->loadWikiFarmSettings(); $config = $settings->getConfig(); foreach ( $expected as $name => $value ) { $this->assertSame( $value, $config->get( $name ) ); } } public function testDetectSettingsFileFromConstant() { $settings = $this->fakeSettingsBuilder(); $settings->expects( $this->once() ) ->method( 'loadFile' ) ->with( 'test/AcmeWiki123.yaml' ); $loader = $this->newLoader( $settings, 'AcmeWiki123' ); $loader->loadWikiFarmSettings(); } public function testDetectSettingsFileFromLegacyVar() { $settings = $this->fakeSettingsBuilder(); $_SERVER['WIKI_NAME'] = 'test/FooBarWiki.yaml'; $this->expectPHPError( E_USER_NOTICE, function () use ( $settings ) { // TODO: Assert that the file is actually loaded after the notice is triggered $loader = $this->newLoader( $settings ); $loader->loadWikiFarmSettings(); }, 'The WIKI_NAME server variable has been deprecated' ); } /** * @param SettingsBuilder $settings * @param ?string $wikiNameConstantValue * * @return WikiFarmSettingsLoader */ private function newLoader( SettingsBuilder $settings, ?string $wikiNameConstantValue = null ) { $loader = new class( $settings, $wikiNameConstantValue ) extends WikiFarmSettingsLoader { private $wikiNameConstantValue; public function __construct( $settings, $wikiNameConstantValue ) { parent::__construct( $settings ); $this->wikiNameConstantValue = $wikiNameConstantValue; } protected function getWikiNameConstant() { return $this->wikiNameConstantValue; } }; return $loader; } } PK ! �2�`� � LocalSettingsLoaderTest.phpnu �Iw�� <?php namespace MediaWiki\Tests\Unit\Settings; use MediaWiki\Registration\ExtensionRegistry; use MediaWiki\Settings\Config\ArrayConfigBuilder; use MediaWiki\Settings\Config\PhpIniSink; use MediaWiki\Settings\LocalSettingsLoader; use MediaWiki\Settings\SettingsBuilder; use PHPUnit\Framework\TestCase; /** * @covers \MediaWiki\Settings\LocalSettingsLoader */ class LocalSettingsLoaderTest extends TestCase { /** * @param array $params * @return SettingsBuilder */ private function newSettingsBuilder( $params = [] ): SettingsBuilder { return new SettingsBuilder( __DIR__, $params['extensionRegistry'] ?? $this->createMock( ExtensionRegistry::class ), $params['configBuilder'] ?? new ArrayConfigBuilder(), $params['phpIniSink'] ?? $this->createMock( PhpIniSink::class ), $params['cache'] ?? null ); } public static function provideLoadingFromFile() { $expected = [ 'SiteName' => 'TestSite', 'HttpsPort' => 443, 'Something' => 'TEST', 'StyleDirectory' => '/test/skins', 'ExtensionDirectory' => '/test/extensions', 'ForeignUploadTargets' => [ 'local', 'acme' ], 'ExtraLanguageCodes' => [ 'no' => 'nb', 'simple' => 'en' ], 'Extra' => 'extra', ]; yield 'JSON' => [ 'fixtures/settings.json', $expected ]; yield 'PHP with variables' => [ 'fixtures/settings-with-variables.php', $expected ]; } /** * @dataProvider provideLoadingFromFile * * @param string $file * @param array $expected */ public function testLoadingFromFile( $file, $expected ) { $settings = $this->newSettingsBuilder(); $settings->loadFile( 'fixtures/default-schema.json' ); $loader = new LocalSettingsLoader( $settings, __DIR__ ); $loader->loadLocalSettingsFile( $file ); $config = $settings->getConfig(); $this->assertFalse( $config->has( 'SillyStuff' ) ); foreach ( $expected as $key => $value ) { $actual = $config->get( $key ); if ( is_array( $value ) ) { ksort( $value ); ksort( $actual ); } $this->assertSame( $value, $actual, 'Setting: ' . $key ); } } public function testLoadingTheSamePhpFileTwice() { $settings = $this->newSettingsBuilder(); $settings->loadFile( 'fixtures/default-schema.json' ); $loader = new LocalSettingsLoader( $settings, __DIR__ ); $loader->loadLocalSettingsFile( 'fixtures/settings-with-variables.php' ); $config1 = $settings->getConfig(); // Now, do it again. $settings = $this->newSettingsBuilder(); $settings->loadFile( 'fixtures/default-schema.json' ); $loader = new LocalSettingsLoader( $settings, __DIR__ ); $loader->loadLocalSettingsFile( 'fixtures/settings-with-variables.php' ); $config2 = $settings->getConfig(); // This would fail if require_once was used inside. $this->assertEquals( $config1, $config2 ); } } PK ! �R�� � Source/PhpSettingsSourceTest.phpnu �Iw�� <?php namespace MediaWiki\Tests\Unit\Settings\Source; use MediaWiki\Settings\SettingsBuilderException; use MediaWiki\Settings\Source\PhpSettingsSource; use PHPUnit\Framework\TestCase; /** * @covers \MediaWiki\Settings\Source\PhpSettingsSource */ class PhpSettingsSourceTest extends TestCase { public function testLoad() { $source = new PhpSettingsSource( __DIR__ . '/fixtures/strategies.php' ); $this->assertSame( [], $source->load() ); } public function testLoadInvalidPhpSource() { $this->expectException( SettingsBuilderException::class ); $source = new PhpSettingsSource( __DIR__ . '/fixtures/bad-strategies.php' ); $source->load(); } public function testLoadFileNotArray() { $this->expectException( SettingsBuilderException::class ); // Let this just be an empty string. $source = new PhpSettingsSource( __DIR__ . '/fixtures/strategies-bad-structure.php' ); $source->load(); } } PK ! y�hk� � "