From 8d8842eb8cd72807d22dbd98dedb5eaec4e7f6a7 Mon Sep 17 00:00:00 2001 From: Guilliam Xavier Date: Thu, 20 May 2021 11:04:19 +0200 Subject: [PATCH] Fix schema minimum-stability pattern --- .github/CONTRIBUTING.md | 2 +- res/composer-schema.json | 6 ++--- .../Composer/Test/Json/ComposerSchemaTest.php | 26 +++++++++---------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8f525a97f..7f161bd79 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -41,7 +41,7 @@ To achieve this, you need to acquire the Composer source code: 2. Download the [`composer.phar`](https://getcomposer.org/composer.phar) executable 3. Run Composer to get the dependencies: `cd composer && php ../composer.phar install` -You can run the test suite by executing `vendor/bin/phpunit` when inside the +You can run the test suite by executing `vendor/bin/simple-phpunit` when inside the composer directory, and run Composer by executing the `bin/composer`. To test your modified Composer code against another project, run `php /path/to/composer/bin/composer` inside that project's directory. diff --git a/res/composer-schema.json b/res/composer-schema.json index 7aa8fbd1a..c5e3376ee 100644 --- a/res/composer-schema.json +++ b/res/composer-schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft-04/schema#", - "name": "Package", + "title": "Package", "type": "object", "additionalProperties": false, "required": [ "name", "description" ], @@ -42,7 +42,7 @@ "version": { "type": "string", "description": "Package version, see https://getcomposer.org/doc/04-schema.md#version for more info on valid schemes.", - "pattern": "^v?\\d+(((\\.\\d+)?\\.\\d+)?\\.\\d+)?|^dev-" + "pattern": "^v?\\d+(\\.\\d+){0,3}|^dev-" }, "time": { "type": "string", @@ -397,7 +397,7 @@ "minimum-stability": { "type": ["string"], "description": "The minimum stability the packages must have to be install-able. Possible values are: dev, alpha, beta, RC, stable.", - "pattern": "^dev|alpha|beta|rc|RC|stable$" + "enum": ["dev", "alpha", "beta", "rc", "RC", "stable"] }, "prefer-stable": { "type": ["boolean"], diff --git a/tests/Composer/Test/Json/ComposerSchemaTest.php b/tests/Composer/Test/Json/ComposerSchemaTest.php index 687c1137a..0eece664c 100644 --- a/tests/Composer/Test/Json/ComposerSchemaTest.php +++ b/tests/Composer/Test/Json/ComposerSchemaTest.php @@ -71,25 +71,23 @@ class ComposerSchemaTest extends TestCase public function testMinimumStabilityValues() { - $json = '{ "name": "vendor/package", "description": "generic description", "minimum-stability": "" }'; - $this->assertEquals(array( + $expectedError = array( array( 'property' => 'minimum-stability', - 'message' => 'Does not match the regex pattern ^dev|alpha|beta|rc|RC|stable$', - 'constraint' => 'pattern', - 'pattern' => '^dev|alpha|beta|rc|RC|stable$', + 'message' => 'Does not have a value in the enumeration ["dev","alpha","beta","rc","RC","stable"]', + 'constraint' => 'enum', + 'enum' => array('dev', 'alpha', 'beta', 'rc', 'RC', 'stable'), ), - ), $this->check($json), 'empty string'); + ); + + $json = '{ "name": "vendor/package", "description": "generic description", "minimum-stability": "" }'; + $this->assertEquals($expectedError, $this->check($json), 'empty string'); $json = '{ "name": "vendor/package", "description": "generic description", "minimum-stability": "dummy" }'; - $this->assertEquals(array( - array( - 'property' => 'minimum-stability', - 'message' => 'Does not match the regex pattern ^dev|alpha|beta|rc|RC|stable$', - 'constraint' => 'pattern', - 'pattern' => '^dev|alpha|beta|rc|RC|stable$', - ), - ), $this->check($json), 'dummy'); + $this->assertEquals($expectedError, $this->check($json), 'dummy'); + + $json = '{ "name": "vendor/package", "description": "generic description", "minimum-stability": "devz" }'; + $this->assertEquals($expectedError, $this->check($json), 'devz'); $json = '{ "name": "vendor/package", "description": "generic description", "minimum-stability": "dev" }'; $this->assertTrue($this->check($json), 'dev');