Hoo man has uploaded a new change for review.

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

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(-)


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

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: newchange
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]>

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

Reply via email to