From 6daa2afdd3fc47376929575f8ab6953143bfe8d4 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Thu, 29 Dec 2016 17:16:06 +0100 Subject: [PATCH] Fix the handling of references in JSON schemas when validating References must be resolved when loading the schema, otherwise they will fail when using them. The easiest way is actually to let the JsonSchema library load the file itself. --- composer.json | 2 +- composer.lock | 2 +- src/Composer/Json/JsonFile.php | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 8e9ba218a..6251e3f19 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ }, "require": { "php": "^5.3.2 || ^7.0", - "justinrainbow/json-schema": "^1.6 || ^2.0 || ^3.0 || ^4.0", + "justinrainbow/json-schema": "^3.0 || ^4.0", "composer/ca-bundle": "^1.0", "composer/semver": "^1.0", "composer/spdx-licenses": "^1.0", diff --git a/composer.lock b/composer.lock index 331413f0c..9925bc490 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "deb4df08cdd39eac7d11880586076ba1", + "content-hash": "e18501d127e13e3619f80abbcf372c81", "packages": [ { "name": "composer/ca-bundle", diff --git a/src/Composer/Json/JsonFile.php b/src/Composer/Json/JsonFile.php index 32e6d129e..1a33992f3 100644 --- a/src/Composer/Json/JsonFile.php +++ b/src/Composer/Json/JsonFile.php @@ -157,7 +157,13 @@ class JsonFile } $schemaFile = __DIR__ . '/../../../res/composer-schema.json'; - $schemaData = json_decode(file_get_contents($schemaFile)); + + // Prepend with file:// only when not using a special schema already (e.g. in the phar) + if (false === strpos($schemaFile, '://')) { + $schemaFile = 'file://' . $schemaFile; + } + + $schemaData = (object) array('$ref' => $schemaFile); if ($schema === self::LAX_SCHEMA) { $schemaData->additionalProperties = true;