Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/210041
Change subject: Update Wikibase - fix bug with Wikibase interaction w/ AbuseFilter ...................................................................... Update Wikibase - fix bug with Wikibase interaction w/ AbuseFilter Change-Id: I94d3adb2cb4fbc2d04f8127e23a4f8e2c93acc7d --- M composer.lock M extensions/Wikibase/repo/includes/EditEntity.php M extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php M vendor/composer/ClassLoader.php M vendor/composer/installed.json 5 files changed, 64 insertions(+), 16 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata refs/changes/41/210041/1 diff --git a/composer.lock b/composer.lock index 1b7223d..404b5f6 100644 --- a/composer.lock +++ b/composer.lock @@ -1,7 +1,7 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], "hash": "70bd36b4d0c521e3a184fdd7e0c95fe3", @@ -1213,7 +1213,7 @@ "source": { "type": "git", "url": "https://git.wikimedia.org/git/mediawiki/extensions/Wikibase.git", - "reference": "b83449d82ca0a5f2fb890e37ef76bb3d0075d463" + "reference": "c6df5a162ec8128ff9036217739b3e0927caa2ce" }, "require": { "data-values/common": "~0.2.0", @@ -1283,7 +1283,7 @@ "issues": "https://bugzilla.wikimedia.org/", "irc": "irc://irc.freenode.net/wikidata" }, - "time": "2015-05-06 01:04:37" + "time": "2015-05-11 10:40:03" }, { "name": "wikibase/wikimedia-badges", @@ -1295,7 +1295,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wmde/WikimediaBadges/zipball/bb5baa8e74f45b66929cc721a112605ba947dbc1", + "url": "https://api.github.com/repos/wmde/WikimediaBadges/zipball/a4cb3fa96adee3f634999873c8bfe432783bf47e", "reference": "bb5baa8e74f45b66929cc721a112605ba947dbc1", "shasum": "" }, diff --git a/extensions/Wikibase/repo/includes/EditEntity.php b/extensions/Wikibase/repo/includes/EditEntity.php index 7b1fcf2..35b5198 100644 --- a/extensions/Wikibase/repo/includes/EditEntity.php +++ b/extensions/Wikibase/repo/includes/EditEntity.php @@ -627,6 +627,7 @@ if ( !$hookStatus->isOK() ) { $this->errorType |= self::FILTERED; } + $this->status->merge( $hookStatus ); if ( !$this->status->isOK() ) { $this->status->setResult( false, array( 'errorFlags' => $this->errorType ) ); diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php index 06f3010..7ea0adf 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php @@ -5,6 +5,7 @@ use FauxRequest; use HashBagOStuff; use IContextSource; +use PHPUnit_Framework_MockObject_Matcher_Invocation; use ReflectionMethod; use RequestContext; use Status; @@ -18,6 +19,7 @@ use Wikibase\EditEntity; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\EntityTitleLookup; +use Wikibase\Repo\Hooks\EditFilterHookRunner; use Wikibase\Repo\Store\EntityPermissionChecker; use Wikibase\Repo\WikibaseRepo; @@ -101,14 +103,23 @@ return $permissionChecker; } - private function getMockEditFitlerHookRunner () { + private function getMockEditFitlerHookRunner ( + Status $status = null, + PHPUnit_Framework_MockObject_Matcher_Invocation $expects = null + ) { + if( is_null( $status ) ) { + $status = Status::newGood(); + } + if( is_null( $expects ) ) { + $expects = $this->any(); + } $runner = $this->getMockBuilder( 'Wikibase\Repo\Hooks\EditFilterHookRunner' ) ->setMethods( array( 'run' ) ) ->disableOriginalConstructor() ->getMock(); - $runner->expects( $this->any() ) + $runner->expects( $expects ) ->method( 'run' ) - ->will( $this->returnValue( Status::newGood() ) ); + ->will( $this->returnValue( $status ) ); return $runner; } @@ -118,6 +129,7 @@ * @param EntityTitleLookup $titleLookup * @param User|null $user * @param bool $baseRevId + * @param EditFilterHookRunner $editFilterHookRunner * * @param null|array $permissions map of actions to bool, indicating which actions are allowed. * @@ -129,13 +141,17 @@ EntityTitleLookup $titleLookup, User $user = null, $baseRevId = false, - $permissions = null + $permissions = null, + $editFilterHookRunner = null ) { $context = new RequestContext(); $context->setRequest( new FauxRequest() ); if ( $user === null ) { $user = User::newFromName( 'EditEntityTestUser' ); + } + if( $editFilterHookRunner === null ) { + $editFilterHookRunner = $this->getMockEditFitlerHookRunner(); } $permissionChecker = $this->getEntityPermissionChecker( $permissions ); @@ -147,7 +163,7 @@ $permissionChecker, $entity, $user, - $this->getMockEditFitlerHookRunner(), + $editFilterHookRunner, $baseRevId, $context ); @@ -772,4 +788,35 @@ $edit = $this->makeEditEntity( $repo, $item, $titleLookup ); $this->assertFalse( $isNew->invoke( $edit ), "Entity exists" ); } + + public function provideHookRunnerReturnStatus() { + return array( + array( Status::newGood() ), + array( Status::newFatal( 'OMG' ) ), + ); + } + + /** + * @dataProvider provideHookRunnerReturnStatus + */ + public function testEditFilterHookRunnerInteraction( Status $hookReturnStatus ) { + $edit = $this->makeEditEntity( + $this->getMockRepository(), + new Item(), + $this->getEntityTitleLookup(), + null, + false, + null, + $this->getMockEditFitlerHookRunner( $hookReturnStatus, $this->once() ) + ); + $user = $this->getUser( 'EditEntityTestUser' ); + + $saveStatus = $edit->attemptSave( + 'some Summary', + EDIT_MINOR, + $user->getEditToken() + ); + + $this->assertEquals( $hookReturnStatus->isGood(), $saveStatus->isGood() ); + } } diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php index 5e1469e..4e05d3b 100644 --- a/vendor/composer/ClassLoader.php +++ b/vendor/composer/ClassLoader.php @@ -351,7 +351,7 @@ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { if (0 === strpos($class, $prefix)) { foreach ($this->prefixDirsPsr4[$prefix] as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { + if (is_file($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { return $file; } } @@ -361,7 +361,7 @@ // PSR-4 fallback dirs foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { return $file; } } @@ -380,7 +380,7 @@ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { if (0 === strpos($class, $prefix)) { foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } @@ -390,7 +390,7 @@ // PSR-0 fallback dirs foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 7d9ed3e..58b6690 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1160,7 +1160,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wmde/WikimediaBadges/zipball/bb5baa8e74f45b66929cc721a112605ba947dbc1", + "url": "https://api.github.com/repos/wmde/WikimediaBadges/zipball/a4cb3fa96adee3f634999873c8bfe432783bf47e", "reference": "bb5baa8e74f45b66929cc721a112605ba947dbc1", "shasum": "" }, @@ -1303,7 +1303,7 @@ "source": { "type": "git", "url": "https://git.wikimedia.org/git/mediawiki/extensions/Wikibase.git", - "reference": "b83449d82ca0a5f2fb890e37ef76bb3d0075d463" + "reference": "c6df5a162ec8128ff9036217739b3e0927caa2ce" }, "require": { "data-values/common": "~0.2.0", @@ -1329,7 +1329,7 @@ "conflict": { "mediawiki/mediawiki": "<1.23" }, - "time": "2015-05-05 20:16:30", + "time": "2015-05-10 21:41:06", "type": "mediawiki-extension", "installation-source": "source", "autoload": { -- To view, visit https://gerrit.wikimedia.org/r/210041 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I94d3adb2cb4fbc2d04f8127e23a4f8e2c93acc7d Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: wmf/1.26wmf4 Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits