jenkins-bot has submitted this change and it was merged.
Change subject: Update Wikibase: Fix RevisionBasedEntityLookup exception
handling
......................................................................
Update Wikibase: Fix RevisionBasedEntityLookup exception handling
Change-Id: I658c0fe1c0a19b0ecc6c631acee75d7ca8d1052f
---
M composer.lock
M extensions/Wikibase/lib/includes/store/RevisionBasedEntityLookup.php
M extensions/Wikibase/lib/tests/phpunit/store/RevisionBasedEntityLookupTest.php
M vendor/composer/installed.json
4 files changed, 155 insertions(+), 88 deletions(-)
Approvals:
Hoo man: Looks good to me, approved
jenkins-bot: Verified
diff --git a/composer.lock b/composer.lock
index e475bdd..8ccd6ad 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1386,12 +1386,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "e60b5cb7fd5959ba5a5d3b7b79210dbec63a806d"
+ "reference": "514c172f385e6f24caec3867652015e420fb25b2"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/e60b5cb7fd5959ba5a5d3b7b79210dbec63a806d",
- "reference": "e60b5cb7fd5959ba5a5d3b7b79210dbec63a806d",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/514c172f385e6f24caec3867652015e420fb25b2",
+ "reference": "514c172f385e6f24caec3867652015e420fb25b2",
"shasum": ""
},
"require": {
@@ -1460,7 +1460,7 @@
"wikibaserepo",
"wikidata"
],
- "time": "2015-09-28 10:00:10"
+ "time": "2015-10-01 09:47:08"
},
{
"name": "wikibase/wikimedia-badges",
diff --git
a/extensions/Wikibase/lib/includes/store/RevisionBasedEntityLookup.php
b/extensions/Wikibase/lib/includes/store/RevisionBasedEntityLookup.php
index 9008a5d..2dfc282 100644
--- a/extensions/Wikibase/lib/includes/store/RevisionBasedEntityLookup.php
+++ b/extensions/Wikibase/lib/includes/store/RevisionBasedEntityLookup.php
@@ -42,6 +42,8 @@
public function getEntity( EntityId $entityId ) {
try {
$revision = $this->lookup->getEntityRevision( $entityId
);
+ } catch ( EntityLookupException $ex ) {
+ throw $ex;
} catch ( \Exception $ex ) {
// TODO: catch more specific exception once
EntityRevisionLookup contract gets clarified
throw new EntityLookupException( $entityId, null, $ex );
@@ -61,6 +63,8 @@
public function hasEntity( EntityId $entityId ) {
try {
return $this->lookup->getLatestRevisionId( $entityId )
!== false;
+ } catch ( EntityLookupException $ex ) {
+ throw $ex;
} catch ( \Exception $ex ) {
// TODO: catch more specific exception once
EntityRevisionLookup contract gets clarified
throw new EntityLookupException( $entityId, null, $ex );
diff --git
a/extensions/Wikibase/lib/tests/phpunit/store/RevisionBasedEntityLookupTest.php
b/extensions/Wikibase/lib/tests/phpunit/store/RevisionBasedEntityLookupTest.php
index 388dc11..83d7408 100644
---
a/extensions/Wikibase/lib/tests/phpunit/store/RevisionBasedEntityLookupTest.php
+++
b/extensions/Wikibase/lib/tests/phpunit/store/RevisionBasedEntityLookupTest.php
@@ -7,6 +7,7 @@
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Lib\Store\RevisionBasedEntityLookup;
+use Wikibase\Lib\Store\RevisionedUnresolvedRedirectException;
/**
* @covers Wikibase\Lib\Store\RevisionBasedEntityLookup
@@ -81,4 +82,66 @@
$this->assertEquals( $exists, $actual );
}
+ public function
testWhenEntityLookupExceptionIsThrown_getEntityPassesItAlong() {
+ $entityLookup = new RevisionBasedEntityLookup(
$this->newEntityLookupExceptionThrowingRevisionLookup() );
+
+ $this->setExpectedException(
'Wikibase\Lib\Store\RevisionedUnresolvedRedirectException' );
+ $entityLookup->getEntity( new ItemId( 'Q1' ) );
+ }
+
+ private function newEntityLookupExceptionThrowingRevisionLookup() {
+ $revisionLookup = $this->getMock(
'Wikibase\Lib\Store\EntityRevisionLookup' );
+
+ $revisionLookup->expects( $this->any() )
+ ->method( 'getEntityRevision' )
+ ->will( $this->throwException( new
RevisionedUnresolvedRedirectException(
+ new ItemId( 'Q1' ),
+ new ItemId( 'Q2' )
+ ) ) );
+
+ $revisionLookup->expects( $this->any() )
+ ->method( 'getLatestRevisionId' )
+ ->will( $this->throwException( new
RevisionedUnresolvedRedirectException(
+ new ItemId( 'Q1' ),
+ new ItemId( 'Q2' )
+ ) ) );
+
+ return $revisionLookup;
+ }
+
+ public function
testWhenEntityLookupExceptionIsThrown_hasEntityPassesItAlong() {
+ $entityLookup = new RevisionBasedEntityLookup(
$this->newEntityLookupExceptionThrowingRevisionLookup() );
+
+ $this->setExpectedException(
'Wikibase\Lib\Store\RevisionedUnresolvedRedirectException' );
+ $entityLookup->hasEntity( new ItemId( 'Q1' ) );
+ }
+
+ public function
testWhenBadExceptionIsThrown_hasEntityRethrowsAsEntityLookupException() {
+ $entityLookup = new RevisionBasedEntityLookup(
$this->newBadExceptionThrowingRevisionLookup() );
+
+ $this->setExpectedException(
'Wikibase\DataModel\Services\Lookup\EntityLookupException' );
+ $entityLookup->hasEntity( new ItemId( 'Q1' ) );
+ }
+
+ private function newBadExceptionThrowingRevisionLookup() {
+ $revisionLookup = $this->getMock(
'Wikibase\Lib\Store\EntityRevisionLookup' );
+
+ $revisionLookup->expects( $this->any() )
+ ->method( 'getEntityRevision' )
+ ->will( $this->throwException( new \Exception( 'Someone
killed a kitten' ) ) );
+
+ $revisionLookup->expects( $this->any() )
+ ->method( 'getLatestRevisionId' )
+ ->will( $this->throwException( new \Exception( 'Someone
killed a kitten' ) ) );
+
+ return $revisionLookup;
+ }
+
+ public function
testWhenBadExceptionIsThrown_getEntityRethrowsAsEntityLookupException() {
+ $entityLookup = new RevisionBasedEntityLookup(
$this->newBadExceptionThrowingRevisionLookup() );
+
+ $this->setExpectedException(
'Wikibase\DataModel\Services\Lookup\EntityLookupException' );
+ $entityLookup->getEntity( new ItemId( 'Q1' ) );
+ }
+
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 6cfc64a..22b7b74 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1223,90 +1223,6 @@
]
},
{
- "name": "wikibase/wikibase",
- "version": "dev-wmf/1.27.0-wmf.1",
- "version_normalized": "dev-wmf/1.27.0-wmf.1",
- "source": {
- "type": "git",
- "url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "e60b5cb7fd5959ba5a5d3b7b79210dbec63a806d"
- },
- "dist": {
- "type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/e60b5cb7fd5959ba5a5d3b7b79210dbec63a806d",
- "reference": "e60b5cb7fd5959ba5a5d3b7b79210dbec63a806d",
- "shasum": ""
- },
- "require": {
- "data-values/common": "~0.3.0",
- "data-values/data-types": "~0.5.0",
- "data-values/data-values": "~1.0",
- "data-values/geo": "~1.0",
- "data-values/interfaces": "~0.2.0|~0.1.5",
- "data-values/javascript": "~0.6.0|~0.7.0",
- "data-values/number": "~0.6.0",
- "data-values/serialization": "~1.0",
- "data-values/time": "~0.8.2",
- "data-values/validators": "~0.1.0",
- "data-values/value-view": "~0.15.5",
- "diff/diff": "~2.0",
- "php": ">=5.3.2",
- "wikibase/data-model": "~4.0",
- "wikibase/data-model-javascript": "^1.0.2",
- "wikibase/data-model-serialization": "~2.0",
- "wikibase/data-model-services": "^3.0.0",
- "wikibase/internal-serialization": "~2.0",
- "wikibase/javascript-api": "~1.0",
- "wikibase/serialization-javascript": "~2.0"
- },
- "conflict": {
- "mediawiki/mediawiki": "<1.23"
- },
- "require-dev": {
- "squizlabs/php_codesniffer": "~2.1"
- },
- "time": "2015-09-28 10:00:10",
- "type": "mediawiki-extension",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "client/includes/",
- "client/WikibaseClient.hooks.php",
- "client/tests/phpunit/",
- "lib/includes/",
- "lib/WikibaseLib.hooks.php",
- "lib/tests/phpunit/",
- "repo/includes/",
- "repo/maintenance/",
- "repo/tests/phpunit/",
- "repo/Wikibase.hooks.php"
- ],
- "psr-4": {
- "Wikibase\\View\\": "view/src",
- "Wikimedia\\Purtle\\": "purtle/src",
- "Wikimedia\\Purtle\\Tests\\": "purtle/tests/phpunit"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0+"
- ],
- "authors": [
- {
- "name": "The Wikidata team"
- }
- ],
- "description": "Structured data repository for MediaWiki",
- "homepage": "http://wikiba.se",
- "keywords": [
- "wikibase",
- "wikibaseclient",
- "wikibaselib",
- "wikibaserepo",
- "wikidata"
- ]
- },
- {
"name": "wikibase/wikimedia-badges",
"version": "dev-master",
"version_normalized": "9999999-dev",
@@ -1549,5 +1465,89 @@
"support": {
"issues": "https://phabricator.wikimedia.org/project/profile/1202/"
}
+ },
+ {
+ "name": "wikibase/wikibase",
+ "version": "dev-wmf/1.27.0-wmf.1",
+ "version_normalized": "dev-wmf/1.27.0-wmf.1",
+ "source": {
+ "type": "git",
+ "url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
+ "reference": "514c172f385e6f24caec3867652015e420fb25b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/514c172f385e6f24caec3867652015e420fb25b2",
+ "reference": "514c172f385e6f24caec3867652015e420fb25b2",
+ "shasum": ""
+ },
+ "require": {
+ "data-values/common": "~0.3.0",
+ "data-values/data-types": "~0.5.0",
+ "data-values/data-values": "~1.0",
+ "data-values/geo": "~1.0",
+ "data-values/interfaces": "~0.2.0|~0.1.5",
+ "data-values/javascript": "~0.6.0|~0.7.0",
+ "data-values/number": "~0.6.0",
+ "data-values/serialization": "~1.0",
+ "data-values/time": "~0.8.2",
+ "data-values/validators": "~0.1.0",
+ "data-values/value-view": "~0.15.5",
+ "diff/diff": "~2.0",
+ "php": ">=5.3.2",
+ "wikibase/data-model": "~4.0",
+ "wikibase/data-model-javascript": "^1.0.2",
+ "wikibase/data-model-serialization": "~2.0",
+ "wikibase/data-model-services": "^3.0.0",
+ "wikibase/internal-serialization": "~2.0",
+ "wikibase/javascript-api": "~1.0",
+ "wikibase/serialization-javascript": "~2.0"
+ },
+ "conflict": {
+ "mediawiki/mediawiki": "<1.23"
+ },
+ "require-dev": {
+ "squizlabs/php_codesniffer": "~2.1"
+ },
+ "time": "2015-10-01 09:47:08",
+ "type": "mediawiki-extension",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "client/includes/",
+ "client/WikibaseClient.hooks.php",
+ "client/tests/phpunit/",
+ "lib/includes/",
+ "lib/WikibaseLib.hooks.php",
+ "lib/tests/phpunit/",
+ "repo/includes/",
+ "repo/maintenance/",
+ "repo/tests/phpunit/",
+ "repo/Wikibase.hooks.php"
+ ],
+ "psr-4": {
+ "Wikibase\\View\\": "view/src",
+ "Wikimedia\\Purtle\\": "purtle/src",
+ "Wikimedia\\Purtle\\Tests\\": "purtle/tests/phpunit"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "The Wikidata team"
+ }
+ ],
+ "description": "Structured data repository for MediaWiki",
+ "homepage": "http://wikiba.se",
+ "keywords": [
+ "wikibase",
+ "wikibaseclient",
+ "wikibaselib",
+ "wikibaserepo",
+ "wikidata"
+ ]
}
]
--
To view, visit https://gerrit.wikimedia.org/r/242838
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I658c0fe1c0a19b0ecc6c631acee75d7ca8d1052f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.27.0-wmf.1
Gerrit-Owner: Hoo man <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits