Why: * Maintenance scripts in core have low test coverage * Improving this will reduce the chances of regressions and bugs What: * Create UpdateExtensionJsonSchemaTest which partly tests the script. Bug: T371167 Change-Id: I289147cdcede17071e80c878fd956f4069b643c2
51 lines
1.6 KiB
PHP
51 lines
1.6 KiB
PHP
<?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();
|
|
}
|
|
}
|