diff --git a/fixtures/info/req-checker-old-req.phar b/fixtures/info/req-checker-old-req.phar index 13d1d6e30..40676b02e 100755 Binary files a/fixtures/info/req-checker-old-req.phar and b/fixtures/info/req-checker-old-req.phar differ diff --git a/src/RequirementChecker/Requirement.php b/src/RequirementChecker/Requirement.php index f1ed580df..73feb9a7d 100644 --- a/src/RequirementChecker/Requirement.php +++ b/src/RequirementChecker/Requirement.php @@ -120,7 +120,7 @@ public static function fromArray(array $value): self return new self( RequirementType::from($value['type']), $value['condition'], - $value['source'], + $value['source'] ?? null, $value['message'], $value['helpMessage'], ); diff --git a/tests/Console/Command/InfoTest.php b/tests/Console/Command/InfoTest.php index 60d565937..b0761d7be 100644 --- a/tests/Console/Command/InfoTest.php +++ b/tests/Console/Command/InfoTest.php @@ -677,18 +677,18 @@ public static function inputProvider(): iterable Files Compression: None Signature: SHA-1 - Signature Hash: 92123D3800E1F6AD1CD1D4099B8D16BC51097A5C + Signature Hash: EEA3F86AA1B61484EE961055F43AA61805071CB1 Metadata: None - Timestamp: 1697988440 (2023-10-22T15:27:20+00:00) + Timestamp: 1699390728 (2023-11-07T20:58:48+00:00) RequirementChecker: Required: - PHP >=5.3 (root) - ext-phar (root) - Contents: 47 files (148.01KB) + Contents: 47 files (147.97KB) // Use the --list|-l option to list the content of the PHAR. diff --git a/tests/RequirementChecker/RequirementTest.php b/tests/RequirementChecker/RequirementTest.php index 2da959c8d..f65a58889 100644 --- a/tests/RequirementChecker/RequirementTest.php +++ b/tests/RequirementChecker/RequirementTest.php @@ -131,6 +131,26 @@ public function test_it_can_be_created_for_a_conflicting_extension_constraint_fo self::assertItCanBeCreatedFromItsArrayForm($requirement, $actual); } + public function test_it_can_be_created_for_a_legacy_requirement(): void + { + $expected = new Requirement( + RequirementType::EXTENSION_CONFLICT, + 'mbstring', + null, + 'The package "box/test" conflicts with the extension "mbstring".', + 'The package "box/test" conflicts with the extension "mbstring". You need to disable it in order to run this application.', + ); + + $actual = Requirement::fromArray([ + 'type' => 'extension-conflict', + 'condition' => 'mbstring', + 'message' => 'The package "box/test" conflicts with the extension "mbstring".', + 'helpMessage' => 'The package "box/test" conflicts with the extension "mbstring". You need to disable it in order to run this application.', + ]); + + self::assertEquals($expected, $actual); + } + private static function assertItCanBeCreatedFromItsArrayForm(Requirement $expected, array $arrayForm): void { $actual = Requirement::fromArray($arrayForm);