From dd8056c7bd9f09e13273a2d402a8a04cb787f203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 31 Dec 2020 10:26:24 +0100 Subject: [PATCH] Fix: Use property path instead of property name to exclude property --- CHANGELOG.md | 15 +++++++++++++-- src/Vendor/Composer/ConfigHashNormalizer.php | 16 ++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eddfe85..bc0b9d88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased -For a full diff see [`1.0.1...main`][1.0.1...main]. +For a full diff see [`1.0.2...main`][1.0.2...main]. + +## [`1.0.2`][1.0.2] + +For a full diff see [`1.0.1...1.0.2`][1.0.1...1.0.2]. + +### Fixed + +* Adjusted `Vendor\Composer\ConfigHashNormalizer` to take into account the full property path, not only the property name ([#429]), by [@localheinz] ## [`1.0.1`][1.0.1] @@ -302,6 +310,7 @@ For a full diff see [`5d8b3e2...0.1.0`][5d8b3e2...0.1.0]. [0.14.1]: https://github.com/ergebnis/json-normalizer/releases/tag/0.14.1 [1.0.0]: https://github.com/ergebnis/json-normalizer/releases/tag/1.0.0 [1.0.1]: https://github.com/ergebnis/json-normalizer/releases/tag/1.0.1 +[1.0.2]: https://github.com/ergebnis/json-normalizer/releases/tag/1.0.2 [5d8b3e2...0.1.0]: https://github.com/ergebnis/json-normalizer/compare/5d8b3e2...0.1.0 [0.1.0...0.2.0]: https://github.com/ergebnis/json-normalizer/compare/0.1.0...0.2.0 @@ -324,7 +333,8 @@ For a full diff see [`5d8b3e2...0.1.0`][5d8b3e2...0.1.0]. [0.14.0...0.14.1]: https://github.com/ergebnis/json-normalizer/compare/0.14.0...0.14.1 [0.14.1...1.0.0]: https://github.com/ergebnis/json-normalizer/compare/0.14.1...1.0.0 [1.0.0...1.0.1]: https://github.com/ergebnis/json-normalizer/compare/1.0.0...1.0.0 -[1.0.1...main]: https://github.com/ergebnis/json-normalizer/compare/1.0.1...main +[1.0.1...1.0.2]: https://github.com/ergebnis/json-normalizer/compare/1.0.1...1.0.2 +[1.0.2...main]: https://github.com/ergebnis/json-normalizer/compare/1.0.2...main [#1]: https://github.com/ergebnis/json-normalizer/pull/1 [#2]: https://github.com/ergebnis/json-normalizer/pull/2 @@ -389,6 +399,7 @@ For a full diff see [`5d8b3e2...0.1.0`][5d8b3e2...0.1.0]. [#423]: https://github.com/ergebnis/json-normalizer/pull/423 [#424]: https://github.com/ergebnis/json-normalizer/pull/424 [#425]: https://github.com/ergebnis/json-normalizer/pull/425 +[#429]: https://github.com/ergebnis/json-normalizer/pull/429 [@BackEndTea]: https://github.com/BackEndTea [@ergebnis]: https://github.com/ergebnis diff --git a/src/Vendor/Composer/ConfigHashNormalizer.php b/src/Vendor/Composer/ConfigHashNormalizer.php index 05efc13f..5b5df573 100644 --- a/src/Vendor/Composer/ConfigHashNormalizer.php +++ b/src/Vendor/Composer/ConfigHashNormalizer.php @@ -27,8 +27,8 @@ final class ConfigHashNormalizer implements NormalizerInterface /** * @see https://getcomposer.org/doc/06-config.md#preferred-install */ - private const PROPERTIES_THAT_SHOULD_NOT_BE_SORTED = [ - 'preferred-install', + private const PROPERTY_PATHS_THAT_SHOULD_NOT_BE_SORTED = [ + 'config.preferred-install', ]; public function normalize(Json $json): Json @@ -66,9 +66,9 @@ public function normalize(Json $json): Json * * @return null|array|bool|false|\stdClass|string */ - private static function sortByKey(string $name, $value) + private static function sortByKey(string $propertyPath, $value) { - if (\in_array($name, self::PROPERTIES_THAT_SHOULD_NOT_BE_SORTED, true)) { + if (\in_array($propertyPath, self::PROPERTY_PATHS_THAT_SHOULD_NOT_BE_SORTED, true)) { return $value; } @@ -89,9 +89,13 @@ private static function sortByKey(string $name, $value) return \array_combine( $names, - \array_map(static function ($value, string $name) { + \array_map(static function ($value, string $name) use ($propertyPath) { return self::sortByKey( - $name, + \sprintf( + '%s.%s', + $propertyPath, + $name + ), $value ); }, $sorted, $names)