Merge "Improve docs for Title::getInternalURL/getCanonicalURL"
[lhc/web/wiklou.git] / includes / registration / ExtensionJsonValidator.php
index 7d59a02..ba5df52 100644 (file)
@@ -25,6 +25,15 @@ use Seld\JsonLint\JsonParser;
 use Seld\JsonLint\ParsingException;
 
 /**
+ * Validate extension.json files against their JSON schema.
+ *
+ * This is used for static validation from the command-line via
+ * validateRegistrationFile.php, and the PHPUnit structure test suite
+ * (ExtensionJsonValidationTest).
+ *
+ * The files are normally read by the ExtensionRegistry
+ * and ExtensionProcessor classes.
+ *
  * @since 1.29
  */
 class ExtensionJsonValidator {
@@ -51,12 +60,16 @@ class ExtensionJsonValidator {
                                'The JsonSchema library cannot be found, please install it through composer.'
                        );
                        return false;
-               } elseif ( !class_exists( SpdxLicenses::class ) ) {
+               }
+
+               if ( !class_exists( SpdxLicenses::class ) ) {
                        call_user_func( $this->missingDepCallback,
                                'The spdx-licenses library cannot be found, please install it through composer.'
                        );
                        return false;
-               } elseif ( !class_exists( JsonParser::class ) ) {
+               }
+
+               if ( !class_exists( JsonParser::class ) ) {
                        call_user_func( $this->missingDepCallback,
                                'The JSON lint library cannot be found, please install it through composer.'
                        );
@@ -95,7 +108,9 @@ class ExtensionJsonValidator {
                        throw new ExtensionJsonValidationError(
                                "$path is using a non-supported schema version"
                        );
-               } elseif ( $version > ExtensionRegistry::MANIFEST_VERSION ) {
+               }
+
+               if ( $version > ExtensionRegistry::MANIFEST_VERSION ) {
                        throw new ExtensionJsonValidationError(
                                "$path is using a non-supported schema version"
                        );
@@ -131,15 +146,15 @@ class ExtensionJsonValidator {
                if ( $validator->isValid() && !$extraErrors ) {
                        // All good.
                        return true;
-               } else {
-                       $out = "$path did not pass validation.\n";
-                       foreach ( $validator->getErrors() as $error ) {
-                               $out .= "[{$error['property']}] {$error['message']}\n";
-                       }
-                       if ( $extraErrors ) {
-                               $out .= implode( "\n", $extraErrors ) . "\n";
-                       }
-                       throw new ExtensionJsonValidationError( $out );
                }
+
+               $out = "$path did not pass validation.\n";
+               foreach ( $validator->getErrors() as $error ) {
+                       $out .= "[{$error['property']}] {$error['message']}\n";
+               }
+               if ( $extraErrors ) {
+                       $out .= implode( "\n", $extraErrors ) . "\n";
+               }
+               throw new ExtensionJsonValidationError( $out );
        }
 }