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