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 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();
}
}
|