Paladox has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/269532

Change subject: Test
......................................................................

Test

Change-Id: I3c58851233a575889d956aaa0fa5a3d21c22018e
---
M Wikidata.php
M extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/ApiErrorReporterTest.php
3 files changed, 61 insertions(+), 63 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/32/269532/1

diff --git a/Wikidata.php b/Wikidata.php
index 0610e8e..c1952ba 100644
--- a/Wikidata.php
+++ b/Wikidata.php
@@ -4,7 +4,7 @@
 }
 
 // Jenkins stuff part1
-if ( PHP_SAPI === 'cli' && strpos( getenv( 'JOB_NAME' ), 
'mwext-Wikidata-testextension' ) !== false ) {
+if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI == true ) {
        // in future, run as non-experimental
        if ( !defined( 'WB_EXPERIMENTAL_FEATURES' ) || 
!WB_EXPERIMENTAL_FEATURES ) {
                define( 'WB_EXPERIMENTAL_FEATURES', true );
@@ -45,7 +45,7 @@
 );
 
 // Jenkins stuff part2
-if ( PHP_SAPI === 'cli' && strpos( getenv( 'JOB_NAME' ), 
'mwext-Wikidata-testextension' ) !== false ) {
+if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI == true ) {
        //Jenkins always loads both so no need to check if they are loaded 
before getting settings
        require_once __DIR__ . '/extensions/Wikibase/repo/ExampleSettings.php';
        require_once __DIR__ . 
'/extensions/Wikibase/client/ExampleSettings.php';
diff --git a/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php 
b/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
index 330ad17..6c30de2 100644
--- a/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
+++ b/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php
@@ -54,29 +54,6 @@
        }
 
        /**
-        * @note This is a workaround for the fact that Message caches the 
message text and
-        * doesn't reset it when the language changes. This can be removed once
-        * https://gerrit.wikimedia.org/r/125388 or an equivalent is merged.
-        *
-        * @param Message $message
-        * @param Language|string $language
-        *
-        * @return Message
-        */
-       private function forceMessageLanguage( Message $message, $language ) {
-               if ( is_string( $language ) ) {
-                       $language = Language::factory( $language );
-               }
-
-               if ( $message->getLanguage()->getCode() !== 
$language->getCode() ) {
-                       // Create a new message object to bypass any caching 
issues
-                       $message = new Message( $message->getKey(), 
$message->getParams(), $language );
-               }
-
-               return $message;
-       }
-
-       /**
         * Reports any warnings in the Status object on the warnings section
         * of the result.
         *
@@ -222,7 +199,7 @@
         * @throws LogicException
         */
        private function dieMessageObject( Message $message, $errorCode, 
$httpRespCode = 0, $extradata = array() ) {
-               $description = $this->forceMessageLanguage( $message, 'en' 
)->useDatabase( false )->plain();
+               $description = $message->inLanguage( 'en' )->useDatabase( false 
)->plain();
 
                $this->addMessageToResult( $message, $extradata );
 
@@ -257,7 +234,7 @@
                if ( $message->exists() ) {
                        $this->addMessageToResult( $message, $extradata );
 
-                       $text = $this->forceMessageLanguage( $message, 'en' 
)->useDatabase( false )->plain();
+                       $text = $message->inLanguage( 'en' )->useDatabase( 
false )->plain();
 
                        if ( $description == '' ) {
                                $description = $text;
@@ -276,8 +253,8 @@
         *
         * @see ApiBase::dieUsage()
         *
-        * @param $description
-        * @param $errorCode
+        * @param string $description
+        * @param string $errorCode
         * @param int $httpRespCode
         * @param null|array $extradata
         *
@@ -308,13 +285,11 @@
 
                $messageData = $this->convertMessageToResult( $message );
 
-               $res = $this->apiModule->getResult();
-
                $messageList = isset( $data['messages'] ) ? $data['messages'] : 
array();
-               $res->setIndexedTagName( $messageList, 'message' );
+               ApiResult::setIndexedTagName( $messageList, 'message' );
 
                $messageList[] = $messageData;
-               $res->setElement( $data, 'messages', $messageList, 
ApiResult::OVERRIDE );
+               ApiResult::setValue( $data, 'messages', $messageList, 
ApiResult::OVERRIDE );
        }
 
        /**
@@ -365,7 +340,6 @@
         */
        private function convertMessagesToResult( array $messageSpecs ) {
                $result = array();
-               $res = $this->apiModule->getResult();
 
                foreach ( $messageSpecs as $message ) {
                        $type = null;
@@ -385,13 +359,13 @@
                        $row = $this->convertMessageToResult( $message );
 
                        if ( $type !== null ) {
-                               $res->setElement( $row, 'type', $type );
+                               ApiResult::setValue( $row, 'type', $type );
                        }
 
                        $result[] = $row;
                }
 
-               $res->setIndexedTagName( $result, 'message' );
+               ApiResult::setIndexedTagName( $result, 'message' );
                return $result;
        }
 
@@ -433,19 +407,18 @@
         * @return array
         */
        private function convertMessageToResult( Message $message ) {
-               $res = $this->apiModule->getResult();
-
                $name = $message->getKey();
                $params = $message->getParams();
 
                $row = array();
-               $res->setElement( $row, 'name', $name );
+               ApiResult::setValue( $row, 'name', $name );
 
-               $res->setElement( $row, 'parameters', $params );
-               $res->setIndexedTagName( $row['parameters'], 'parameter' );
+               ApiResult::setValue( $row, 'parameters', $params );
+               ApiResult::setIndexedTagName( $row['parameters'], 'parameter' );
 
-               $html = $this->forceMessageLanguage( $message, $this->language 
)->useDatabase( true )->parse();
-               $res->setContent( $row, $html, 'html' );
+               $html = $message->inLanguage( $this->language )->useDatabase( 
true )->parse();
+               ApiResult::setValue( $row, 'html', $html );
+               $row[ApiResult::META_BC_SUBELEMENTS][] = 'html';
 
                return $row;
        }
@@ -482,7 +455,7 @@
                        // it's a plain string containing a message key
                        $name = $messageSpec;
                } elseif ( is_array( $messageSpec ) ) {
-                       if ( isset( $messageSpec[0]) ) {
+                       if ( isset( $messageSpec[0] ) ) {
                                // it's an indexed array, the first entriy is 
the message key, the rest are paramters
                                $name = $messageSpec[0];
                                $params = array_slice( $messageSpec, 1 );
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiErrorReporterTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiErrorReporterTest.php
index 8458a42..82b0af5 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiErrorReporterTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiErrorReporterTest.php
@@ -26,7 +26,13 @@
  */
 class ApiErrorReporterTest extends \MediaWikiTestCase {
 
-       protected function assertUsageException( $info, $code, $httpStatusCode, 
$expectedDataFields, UsageException $ex ) {
+       protected function assertUsageException(
+               $info,
+               $code,
+               $httpStatusCode,
+               array $expectedDataFields,
+               UsageException $ex
+       ) {
                $messageArray = $ex->getMessageArray();
 
                $this->assertArrayHasKey( 'code', $messageArray );
@@ -44,11 +50,9 @@
                        $this->assertEquals( $httpStatusCode, $ex->getCode() );
                }
 
-               if ( $expectedDataFields ) {
-                       foreach ( $expectedDataFields as $path => $value ) {
-                               $path = explode( '/', $path );
-                               $this->assertValueAtPath( $value, $path, 
$messageArray );
-                       }
+               foreach ( $expectedDataFields as $path => $value ) {
+                       $path = explode( '/', $path );
+                       $this->assertValueAtPath( $value, $path, $messageArray 
);
                }
        }
 
@@ -109,7 +113,7 @@
                                '$expectedData' => array(
                                        'fruit' => 'Banana',
                                        'messages/0/name' => 
'wikibase-api-no-such-sitelink',
-                                       'messages/0/html/*' => '/gefunden/', // 
in German
+                                       'messages/0/html' => '/gefunden/', // 
in German
                                ),
                        ),
 
@@ -123,7 +127,7 @@
                                '$infoPattern' => '/^Malformed value\./',
                                '$expectedData' => array(
                                        'messages/0/name' => 
'wikibase-parse-error',
-                                       'messages/0/html/*' => '/Wert/', // in 
German
+                                       'messages/0/html' => '/Wert/', // in 
German
                                ),
                        ),
                );
@@ -132,7 +136,14 @@
        /**
         * @dataProvider exceptionProvider
         */
-       public function testDieException( $exception, $code, $httpStatusCode, 
$extradata, $infoPattern, $expectedDataFields ) {
+       public function testDieException(
+               $exception,
+               $code,
+               $httpStatusCode,
+               array $extradata = null,
+               $infoPattern,
+               array $expectedDataFields
+       ) {
                $api = new ApiMain();
                $localizer = $this->getExceptionLocalizer();
                $reporter = new ApiErrorReporter( $api, $localizer, 
Language::factory( 'de' ) );
@@ -159,7 +170,7 @@
                                '$infoPattern' => '/sitelink/',
                                '$expectedDataFields' => array(
                                        'messages/0/name' => 
'wikibase-api-no-such-sitelink',
-                                       'messages/0/html/*' => '/gefunden/', // 
in German
+                                       'messages/0/html' => '/gefunden/', // 
in German
                                        'messages/0/parameters/0' => '/Foo/',
                                ),
                        )
@@ -169,7 +180,7 @@
        /**
         * @dataProvider messageProvider
         */
-       public function testDieMessage( $code, $param, $infoPattern, 
$expectedDataFields ) {
+       public function testDieMessage( $code, $param, $infoPattern, array 
$expectedDataFields ) {
                $api = new ApiMain();
                $localizer = $this->getExceptionLocalizer();
                $reporter = new ApiErrorReporter( $api, $localizer, 
Language::factory( 'de' ) );
@@ -201,10 +212,10 @@
                                '$infoPattern' => '/sitelink/',
                                '$expectedData' => array(
                                        'messages/0/name' => 
'wikibase-api-no-such-sitelink',
-                                       'messages/0/html/*' => '/gefunden/', // 
in German
+                                       'messages/0/html' => '/gefunden/', // 
in German
                                        'messages/1/name' => 
'wikibase-noentity',
                                        'messages/1/parameters/0' => 'Q123',
-                                       'messages/1/html/*' => '/ist nicht 
vorhanden/', // in German
+                                       'messages/1/html' => '/ist nicht 
vorhanden/', // in German
                                ),
                        ),
 
@@ -226,7 +237,14 @@
        /**
         * @dataProvider statusProvider
         */
-       public function testDieStatus( Status $status, $code, $httpStatusCode, 
$extradata, $infoPattern, $expectedDataFields ) {
+       public function testDieStatus(
+               Status $status,
+               $code,
+               $httpStatusCode,
+               array $extradata = null,
+               $infoPattern,
+               array $expectedDataFields
+       ) {
                $api = new ApiMain();
                $localizer = $this->getExceptionLocalizer();
                $reporter = new ApiErrorReporter( $api, $localizer, 
Language::factory( 'de' ) );
@@ -273,7 +291,14 @@
        /**
         * @dataProvider errorProvider
         */
-       public function testDieError( $description, $code, $httpStatusCode, 
$extradata, $infoPattern, $expectedDataFields ) {
+       public function testDieError(
+               $description,
+               $code,
+               $httpStatusCode,
+               array $extradata,
+               $infoPattern,
+               array $expectedDataFields
+       ) {
                $api = new ApiMain();
                $localizer = $this->getExceptionLocalizer();
                $reporter = new ApiErrorReporter( $api, $localizer, 
Language::factory( 'de' ) );
@@ -297,9 +322,9 @@
                                '$status' => $status,
                                '$expectedData' => array(
                                        'warnings/main_int/messages/0/name' => 
'wikibase-conflict-patched',
-                                       'warnings/main_int/messages/0/html/*' 
=> '/Version/', // in German
+                                       'warnings/main_int/messages/0/html' => 
'/Version/', // in German
                                        'warnings/main_int/messages/1/name' => 
'undo-nochange',
-                                       'warnings/main_int/messages/1/html/*' 
=> '/Bearbeitung.*bereits/', // in German
+                                       'warnings/main_int/messages/1/html' => 
'/Bearbeitung.*bereits/', // in German
                                ),
                        ),
                );
@@ -308,14 +333,14 @@
        /**
         * @dataProvider warningProvider
         */
-       public function testReportStatusWarnings( Status $status, 
$expectedDataFields ) {
+       public function testReportStatusWarnings( Status $status, array 
$expectedDataFields ) {
                $api = new ApiMain();
                $localizer = $this->getExceptionLocalizer();
                $reporter = new ApiErrorReporter( $api, $localizer, 
Language::factory( 'de' ) );
 
                $reporter->reportStatusWarnings( $status );
 
-               $result = $api->getResult()->getData();
+               $result = $api->getResult()->getResultData();
 
                foreach ( $expectedDataFields as $path => $value ) {
                        $path = explode( '/', $path );

-- 
To view, visit https://gerrit.wikimedia.org/r/269532
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3c58851233a575889d956aaa0fa5a3d21c22018e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: REL1_25
Gerrit-Owner: Paladox <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to