jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/377283 )

Change subject: Limit constraint checks on most types to statements
......................................................................


Limit constraint checks on most types to statements

Some constraint types should never be checked on non-statement contexts;
others (those with a TODO comment) require some more work, which will be
done separately. Some of those constraint types were already ignored on
non-statement contexts, so for those types the change just adjusts the
check result status and, where appropriate, adds a TODO comment.

This also changes the reported type of FakeSnakContext so that
constraints are still checked on those contexts.

Bug: T175570
Change-Id: Ia82a80aeb3118075ba4fa7e1b8a127cc103446df
---
M includes/ConstraintCheck/Checker/ConflictsWithChecker.php
M includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
M includes/ConstraintCheck/Checker/InverseChecker.php
M includes/ConstraintCheck/Checker/ItemChecker.php
M includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
M includes/ConstraintCheck/Checker/MultiValueChecker.php
M includes/ConstraintCheck/Checker/QualifiersChecker.php
M includes/ConstraintCheck/Checker/SingleValueChecker.php
M includes/ConstraintCheck/Checker/SymmetricChecker.php
M includes/ConstraintCheck/Checker/TypeChecker.php
M includes/ConstraintCheck/Checker/UniqueValueChecker.php
M includes/ConstraintCheck/Result/CheckResult.php
M tests/phpunit/Fake/FakeSnakContext.php
13 files changed, 40 insertions(+), 4 deletions(-)

Approvals:
  jenkins-bot: Verified
  Thiemo Mättig (WMDE): Looks good to me, approved



diff --git a/includes/ConstraintCheck/Checker/ConflictsWithChecker.php 
b/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
index b151b36..3957a7d 100644
--- a/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
+++ b/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
@@ -74,6 +74,10 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       // TODO T175562
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $parameters = [];
                $constraintParameters = $constraint->getConstraintParameters();
diff --git a/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php 
b/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
index 1de84e7..ed88f83 100644
--- a/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
+++ b/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
@@ -87,6 +87,10 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       // TODO T175565
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $parameters = [];
                $constraintParameters = $constraint->getConstraintParameters();
diff --git a/includes/ConstraintCheck/Checker/InverseChecker.php 
b/includes/ConstraintCheck/Checker/InverseChecker.php
index aafb1c3..954e9b6 100644
--- a/includes/ConstraintCheck/Checker/InverseChecker.php
+++ b/includes/ConstraintCheck/Checker/InverseChecker.php
@@ -75,6 +75,9 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $parameters = [];
                $constraintParameters = $constraint->getConstraintParameters();
diff --git a/includes/ConstraintCheck/Checker/ItemChecker.php 
b/includes/ConstraintCheck/Checker/ItemChecker.php
index 44a30cc..1eaa65e 100644
--- a/includes/ConstraintCheck/Checker/ItemChecker.php
+++ b/includes/ConstraintCheck/Checker/ItemChecker.php
@@ -73,6 +73,10 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       // TODO T175562
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $parameters = [];
                $constraintParameters = $constraint->getConstraintParameters();
diff --git a/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php 
b/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
index f08b6b6..f5805cc 100644
--- a/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
+++ b/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
@@ -57,7 +57,7 @@
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
                if ( $context->getType() !== Context::TYPE_STATEMENT ) {
-                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_TODO );
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
                }
 
                $parameters = [];
diff --git a/includes/ConstraintCheck/Checker/MultiValueChecker.php 
b/includes/ConstraintCheck/Checker/MultiValueChecker.php
index a845b88..bdb00b8 100644
--- a/includes/ConstraintCheck/Checker/MultiValueChecker.php
+++ b/includes/ConstraintCheck/Checker/MultiValueChecker.php
@@ -39,6 +39,10 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       // TODO T175566
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $propertyId = $context->getSnak()->getPropertyId();
 
diff --git a/includes/ConstraintCheck/Checker/QualifiersChecker.php 
b/includes/ConstraintCheck/Checker/QualifiersChecker.php
index df6b6a9..b91cabe 100644
--- a/includes/ConstraintCheck/Checker/QualifiersChecker.php
+++ b/includes/ConstraintCheck/Checker/QualifiersChecker.php
@@ -57,7 +57,7 @@
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
                if ( $context->getType() !== Context::TYPE_STATEMENT ) {
-                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_TODO );
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
                }
 
                $parameters = [];
diff --git a/includes/ConstraintCheck/Checker/SingleValueChecker.php 
b/includes/ConstraintCheck/Checker/SingleValueChecker.php
index 32e6833..02d6fbc 100644
--- a/includes/ConstraintCheck/Checker/SingleValueChecker.php
+++ b/includes/ConstraintCheck/Checker/SingleValueChecker.php
@@ -39,6 +39,10 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       // TODO T175566
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $propertyId = $context->getSnak()->getPropertyId();
 
diff --git a/includes/ConstraintCheck/Checker/SymmetricChecker.php 
b/includes/ConstraintCheck/Checker/SymmetricChecker.php
index b5e8e45..4ad3829 100644
--- a/includes/ConstraintCheck/Checker/SymmetricChecker.php
+++ b/includes/ConstraintCheck/Checker/SymmetricChecker.php
@@ -65,6 +65,9 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $parameters = [];
 
diff --git a/includes/ConstraintCheck/Checker/TypeChecker.php 
b/includes/ConstraintCheck/Checker/TypeChecker.php
index b4aa162..245649f 100644
--- a/includes/ConstraintCheck/Checker/TypeChecker.php
+++ b/includes/ConstraintCheck/Checker/TypeChecker.php
@@ -76,6 +76,9 @@
                if ( $context->getSnakRank() === Statement::RANK_DEPRECATED ) {
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
+               if ( $context->getType() !== Context::TYPE_STATEMENT ) {
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
+               }
 
                $parameters = [];
                $constraintParameters = $constraint->getConstraintParameters();
diff --git a/includes/ConstraintCheck/Checker/UniqueValueChecker.php 
b/includes/ConstraintCheck/Checker/UniqueValueChecker.php
index f552d8a..ac5ee30 100644
--- a/includes/ConstraintCheck/Checker/UniqueValueChecker.php
+++ b/includes/ConstraintCheck/Checker/UniqueValueChecker.php
@@ -58,7 +58,8 @@
                        return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_DEPRECATED );
                }
                if ( $context->getType() !== Context::TYPE_STATEMENT ) {
-                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_TODO );
+                       // TODO T175561
+                       return new CheckResult( $context, $constraint, [], 
CheckResult::STATUS_NOSTATEMENT );
                }
 
                $parameters = [];
diff --git a/includes/ConstraintCheck/Result/CheckResult.php 
b/includes/ConstraintCheck/Result/CheckResult.php
index b8ec2b5..5fc3bc7 100644
--- a/includes/ConstraintCheck/Result/CheckResult.php
+++ b/includes/ConstraintCheck/Result/CheckResult.php
@@ -51,6 +51,12 @@
         * constraint checkers should not assign this status directly.
         */
        const STATUS_WARNING = 'warning';
+       /**
+        * The constraint type is only checked on statements,
+        * but the current context is not a statement context,
+        * so the constraint check is skipped.
+        */
+       const STATUS_NOSTATEMENT = 'no-statement';
 
        /**
         * @var Constraint
diff --git a/tests/phpunit/Fake/FakeSnakContext.php 
b/tests/phpunit/Fake/FakeSnakContext.php
index daaf355..76eed30 100644
--- a/tests/phpunit/Fake/FakeSnakContext.php
+++ b/tests/phpunit/Fake/FakeSnakContext.php
@@ -29,7 +29,7 @@
        }
 
        public function getType() {
-               return 'test';
+               return 'statement';
        }
 
        public function storeCheckResultInArray( array $result, array 
&$container ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/377283
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia82a80aeb3118075ba4fa7e1b8a127cc103446df
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to