1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?php
namespace MediaWiki\Tests\Maintenance;
use MediaWiki\Json\FormatJson;
use MediaWiki\Registration\ExtensionRegistry;
use UpdateExtensionJsonSchema;
/**
* @covers ValidateRegistrationFile
* @author Dreamy Jazz
*/
class UpdateExtensionJsonSchemaTest extends MaintenanceBaseTestCase {
protected function getMaintenanceClass() {
return UpdateExtensionJsonSchema::class;
}
public function testExecuteForNonExistingFilename() {
$filename = __DIR__ . '/NonExistentPathForTest/abcdef.json';
$this->maintenance->setArg( 'path', $filename );
$this->expectCallToFatalError();
$this->expectOutputRegex( '/Error: Unable to read ' . preg_quote( $filename, '/' ) . '/' );
$this->maintenance->execute();
}
private function getFileWithContent( string $content ): string {
$testFilename = $this->getNewTempFile();
$testFile = fopen( $testFilename, 'w' );
fwrite( $testFile, $content );
fclose( $testFile );
return $testFilename;
}
public function testExecuteForInvalidJson() {
$this->maintenance->setArg( 'path', $this->getFileWithContent( '{' ) );
$this->expectCallToFatalError();
$this->expectOutputRegex( '/Error: Invalid JSON/' );
$this->maintenance->execute();
}
public function testExecuteForLatestManifestVersion() {
$filename = $this->getFileWithContent( FormatJson::encode( [
'manifest_version' => ExtensionRegistry::MANIFEST_VERSION,
'name' => 'FakeExtension',
] ) );
$this->maintenance->setArg( 'path', $filename );
$this->expectOutputString( 'Already at the latest version: ' . ExtensionRegistry::MANIFEST_VERSION . "\n" );
$this->maintenance->execute();
}
}
|