Skip to content

Commit 46bd7bb

Browse files
committed
wip
1 parent e915c8f commit 46bd7bb

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/Composer.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,24 @@ public static function fromFile(string $path): self
3737
return new self($data);
3838
}
3939

40+
/**
41+
* @param mixed[] $data
42+
*/
4043
private function __construct(
41-
/** @param mixed[] $data */
4244
private array $data,
4345
private VersionParser $versionParser = new VersionParser,
4446
) {}
4547

4648
public function requiredPhpConstraint(): string
4749
{
48-
if (! isset($this->data['require']['php'])) {
49-
throw new UnexpectedValueException('The "require.php" field is not set.');
50+
$require = $this->data['require'] ?? [];
51+
if (! is_array($require)) {
52+
$require = [];
5053
}
54+
$constraint = $require['php'] ?? null;
5155

52-
$constraint = $this->data['require']['php'];
5356
if (! is_string($constraint)) {
54-
throw new UnexpectedValueException('The "require.php" field is not a string.');
57+
throw new UnexpectedValueException('The "require.php" field is not set or not a string.');
5558
}
5659

5760
try {

tests/Unit/ComposerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
// No "require.php" is set.
6767
'{"require":{"some/package":"^1.0"}}',
6868
'{"require":{}}',
69+
'{"require":123}',
6970
'{"require-dev":{"php":"^1.0"}}',
7071
'{"php":"^1.0"}',
7172
'{}',
@@ -80,6 +81,7 @@
8081
// "require.php" is not a valid constraint.
8182
'{"require":{"php":"invalid constraint"}}',
8283
'{"require":{"php":"~>1.0"}}',
84+
'{"require":{"php":""}}',
8385
]);
8486
});
8587
});

0 commit comments

Comments
 (0)