From ca4bba6a98b07afc49e62958d0731ee98119e4f4 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Wed, 2 Mar 2016 12:17:55 -0500 Subject: [PATCH] Fix use of RawMessage in Status::getMessage() RawMessage::__construct() takes a single array of params, it's not varargs-style like wfMessage(). Change-Id: I63950ee16e359aa2627228350e27d9e94bb6e8ce --- includes/Status.php | 2 +- tests/phpunit/includes/StatusTest.php | 38 +++++++++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/includes/Status.php b/includes/Status.php index 53702393f1..75fe190a02 100644 --- a/includes/Status.php +++ b/includes/Status.php @@ -265,7 +265,7 @@ class Status { if ( $longContext ) { $s = wfMessage( $longContext, $s ); } elseif ( $shortContext ) { - $wrapper = new RawMessage( "\n\$1\n", $s ); + $wrapper = new RawMessage( "\n\$1\n", [ $s ] ); $wrapper->parse(); $s = wfMessage( $shortContext, $wrapper ); } diff --git a/tests/phpunit/includes/StatusTest.php b/tests/phpunit/includes/StatusTest.php index fffc4f5e6b..6f4395b952 100644 --- a/tests/phpunit/includes/StatusTest.php +++ b/tests/phpunit/includes/StatusTest.php @@ -403,13 +403,29 @@ class StatusTest extends MediaWikiLangTestCase { /** * @dataProvider provideGetMessage * @covers Status::getMessage - * @todo test long and short context messages generated through this method */ - public function testGetMessage( Status $status, $expectedParams = [], $expectedKey ) { + public function testGetMessage( + Status $status, $expectedParams = [], $expectedKey, $expectedWrapper + ) { $message = $status->getMessage(); $this->assertInstanceOf( 'Message', $message ); $this->assertEquals( $expectedParams, $message->getParams(), 'Message::getParams' ); $this->assertEquals( $expectedKey, $message->getKey(), 'Message::getKey' ); + + $message = $status->getMessage( 'wrapper-short', 'wrapper-long' ); + $this->assertInstanceOf( 'Message', $message ); + $this->assertEquals( $expectedWrapper, $message->getKey(), 'Message::getKey with wrappers' ); + $this->assertCount( 1, $message->getParams(), 'Message::getParams with wrappers' ); + + $message = $status->getMessage( 'wrapper' ); + $this->assertInstanceOf( 'Message', $message ); + $this->assertEquals( 'wrapper', $message->getKey(), 'Message::getKey with wrappers' ); + $this->assertCount( 1, $message->getParams(), 'Message::getParams with wrappers' ); + + $message = $status->getMessage( false, 'wrapper' ); + $this->assertInstanceOf( 'Message', $message ); + $this->assertEquals( 'wrapper', $message->getKey(), 'Message::getKey with wrappers' ); + $this->assertCount( 1, $message->getParams(), 'Message::getParams with wrappers' ); } /** @@ -424,7 +440,8 @@ class StatusTest extends MediaWikiLangTestCase { $testCases['GoodStatus'] = [ new Status(), [ "Status::getMessage called for a good result, this is incorrect\n" ], - 'internalerror_info' + 'internalerror_info', + 'wrapper-short' ]; $status = new Status(); @@ -432,7 +449,8 @@ class StatusTest extends MediaWikiLangTestCase { $testCases['GoodButNoError'] = [ $status, [ "Status::getMessage: Invalid result object: no error text but not OK\n" ], - 'internalerror_info' + 'internalerror_info', + 'wrapper-short' ]; $status = new Status(); @@ -440,7 +458,8 @@ class StatusTest extends MediaWikiLangTestCase { $testCases['1StringWarning'] = [ $status, [], - 'fooBar!' + 'fooBar!', + 'wrapper-short' ]; // FIXME: Assertion tries to compare a StubUserLang with a Language object, because @@ -454,7 +473,8 @@ class StatusTest extends MediaWikiLangTestCase { // $testCases[ '2StringWarnings' ] = array( // $status, // array( new Message( 'fooBar!' ), new Message( 'fooBar2!' ) ), -// "* \$1\n* \$2" +// "* \$1\n* \$2", +// 'wrapper-long' // ); $status = new Status(); @@ -462,7 +482,8 @@ class StatusTest extends MediaWikiLangTestCase { $testCases['1MessageWarning'] = [ $status, [ 'foo', 'bar' ], - 'fooBar!' + 'fooBar!', + 'wrapper-short' ]; $status = new Status(); @@ -471,7 +492,8 @@ class StatusTest extends MediaWikiLangTestCase { $testCases['2MessageWarnings'] = [ $status, [ new Message( 'fooBar!', [ 'foo', 'bar' ] ), new Message( 'fooBar2!' ) ], - "* \$1\n* \$2" + "* \$1\n* \$2", + 'wrapper-long' ]; return $testCases; -- 2.20.1