Tobias Gritschacher has uploaded a new change for review. https://gerrit.wikimedia.org/r/94137
Change subject: Fix comparison of objects in ClaimDiffer ...................................................................... Fix comparison of objects in ClaimDiffer ClaimDiffer was detecting changes in the mainsnak even if nothing was changed. This was due to a wrong comparison method used for comparing snak objects. Change-Id: I2f3273596731276770c66695ac839aa6912f133d --- M lib/includes/ClaimDiffer.php 1 file changed, 13 insertions(+), 12 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/37/94137/1 diff --git a/lib/includes/ClaimDiffer.php b/lib/includes/ClaimDiffer.php index 5b42066..70f993e 100644 --- a/lib/includes/ClaimDiffer.php +++ b/lib/includes/ClaimDiffer.php @@ -5,6 +5,7 @@ use Diff\Diff; use Diff\Differ; use Diff\DiffOpChange; +use Wikibase\DataModel\Internal\ObjectComparer; /** * Class for generating a ClaimDifference given two claims. @@ -69,7 +70,9 @@ private function diffMainSnaks( $oldClaim, $newClaim ) { $oldClaimMainSnak = $oldClaim === null ? null : $oldClaim->getMainSnak(); $newClaimMainSnak = $newClaim === null ? null : $newClaim->getMainSnak(); - if( $oldClaimMainSnak !== $newClaimMainSnak ){ + + $mainSnakComparer = new ObjectComparer(); + if( !$mainSnakComparer->dataEquals( $oldClaimMainSnak, $newClaimMainSnak ) ) { return new DiffOpChange( $oldClaimMainSnak, $newClaimMainSnak ); } return null; @@ -79,15 +82,13 @@ * @param Claim $oldClaim * @param Claim $newClaim * - * @return DiffOpChange|null + * @return Diff */ private function diffQualifiers( $oldClaim, $newClaim ) { $oldQualifiers = $oldClaim === null ? array() : iterator_to_array( $oldClaim->getQualifiers() ); $newQualifiers = $newClaim === null ? array() : iterator_to_array( $newClaim->getQualifiers() ); - if( $oldQualifiers !== $newQualifiers ){ - return new Diff( $this->listDiffer->doDiff( $oldQualifiers, $newQualifiers ), false ); - } - return null; + + return new Diff( $this->listDiffer->doDiff( $oldQualifiers, $newQualifiers ), false ); } /** @@ -99,7 +100,9 @@ private function diffRank( $oldClaim, $newClaim ) { $oldRank = $oldClaim === null ? null : $oldClaim->getRank(); $newRank = $newClaim === null ? null : $newClaim->getRank(); - if( $oldRank !== $newRank ){ + + $rankComparer = new ObjectComparer(); + if( !$rankComparer->dataEquals( $oldRank, $newRank ) ){ return new DiffOpChange( $oldRank, $newRank ); } return null; @@ -109,15 +112,13 @@ * @param Statement $oldClaim * @param Statement $newClaim * - * @return DiffOpChange|null + * @return Diff */ private function diffReferences( $oldClaim, $newClaim ) { $oldReferences = $oldClaim === null ? array() : iterator_to_array( $oldClaim->getReferences() ); $newReferences = $newClaim === null ? array() : iterator_to_array( $newClaim->getReferences() ); - if( $oldReferences !== $newReferences ){ - return new Diff( $this->listDiffer->doDiff( $oldReferences, $newReferences ), false ); - } - return null; + + return new Diff( $this->listDiffer->doDiff( $oldReferences, $newReferences ), false ); } } -- To view, visit https://gerrit.wikimedia.org/r/94137 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2f3273596731276770c66695ac839aa6912f133d Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits