wiki.techinc.nl/tests/phpunit/maintenance/UpdateExtensionJsonSchemaTest.php
Dreamy Jazz 955a81b592 Start on tests for updateExtensionJsonSchema.php
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
2024-09-02 10:11:45 +00:00

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