Why: * Maintenance scripts in core have low test coverage * Improving this will reduce the chances of regressions and bugs What: * Create ValidateRegistrationFileTest Bug: T371167 Change-Id: Icba4650a0d3f6af3d597628753af292f522e5456
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 ValidateRegistrationFile;
|
|
|
|
/**
|
|
* @covers ValidateRegistrationFile
|
|
* @author Dreamy Jazz
|
|
*/
|
|
class ValidateRegistrationFileTest extends MaintenanceBaseTestCase {
|
|
|
|
protected function getMaintenanceClass() {
|
|
return ValidateRegistrationFile::class;
|
|
}
|
|
|
|
private function getFileWithContent( string $content ): string {
|
|
$testFilename = $this->getNewTempFile();
|
|
$testFile = fopen( $testFilename, 'w' );
|
|
fwrite( $testFile, $content );
|
|
fclose( $testFile );
|
|
return $testFilename;
|
|
}
|
|
|
|
public function testExecuteForInvalidRegistrationFile() {
|
|
// Get a fake extension.json with an invalid manifest version.
|
|
$this->maintenance->setArg( 'path', $this->getFileWithContent(
|
|
FormatJson::encode( [ 'manifest_version' => ExtensionRegistry::MANIFEST_VERSION + 1 ] )
|
|
) );
|
|
// Expect a fatal error with an error about the invalid manifest version
|
|
$this->expectCallToFatalError();
|
|
$this->expectOutputRegex( '/non-supported schema version/' );
|
|
$this->maintenance->execute();
|
|
}
|
|
|
|
public function testExecuteForValidRegistrationFile() {
|
|
// Get a fake extension.json which is valid
|
|
$filename = $this->getFileWithContent( FormatJson::encode( [
|
|
'manifest_version' => ExtensionRegistry::MANIFEST_VERSION,
|
|
'name' => 'FakeExtension',
|
|
] ) );
|
|
$this->maintenance->setArg( 'path', $filename );
|
|
// Expect a fatal error with an error about the invalid manifest version
|
|
$this->expectOutputRegex(
|
|
'/' . preg_quote( $filename, '/' ) . ' validates against the schema/'
|
|
);
|
|
$this->maintenance->execute();
|
|
}
|
|
}
|