* @since 1.27
* @param string $key Message key
* @param string $lang Language code
- * @return string
+ * @return string|null
*/
protected function fetchMessage( $key, $lang ) {
$message = wfMessage( $key )->inLanguage( $lang );
- $value = $message->plain();
if ( !$message->exists() ) {
$this->logger->warning( 'Failed to find {messageKey} ({lang})', [
'messageKey' => $key,
'lang' => $lang,
] );
+ $value = null;
+ } else {
+ $value = $message->plain();
}
return $value;
}
private function generateMessageBlob( ResourceLoaderModule $module, $lang ) {
$messages = [];
foreach ( $module->getMessages() as $key ) {
- $messages[$key] = $this->fetchMessage( $key, $lang );
+ $value = $this->fetchMessage( $key, $lang );
+ if ( $value !== null ) {
+ $messages[$key] = $value;
+ }
}
$json = FormatJson::encode( (object)$messages );
$this->assertEquals( '{"mainpage":"Main Page"}', $blob, 'Generated blob' );
}
+ public function testBlobCreation_empty() {
+ $module = $this->makeModule( [] );
+ $rl = new ResourceLoader();
+ $rl->register( $module->getName(), $module );
+
+ $blobStore = $this->makeBlobStore( null, $rl );
+ $blob = $blobStore->getBlob( $module, 'en' );
+
+ $this->assertEquals( '{}', $blob, 'Generated blob' );
+ }
+
public function testBlobCreation_unknownMessage() {
- $module = $this->makeModule( [ 'i-dont-exist' ] );
+ $module = $this->makeModule( [ 'i-dont-exist', 'mainpage', 'i-dont-exist2' ] );
$rl = new ResourceLoader();
$rl->register( $module->getName(), $module );
$blobStore = $this->makeBlobStore( null, $rl );
- // Generating a blob should succeed without errors,
- // even if a message is unknown.
+ // Generating a blob should continue without errors,
+ // with keys of unknown messages excluded from the blob.
$blob = $blobStore->getBlob( $module, 'en' );
- $this->assertEquals( '{"i-dont-exist":"\u29fci-dont-exist\u29fd"}', $blob, 'Generated blob' );
+ $this->assertEquals( '{"mainpage":"Main Page"}', $blob, 'Generated blob' );
}
public function testMessageCachingAndPurging() {