From af50f0bfadd0e75967ba95da1530c24f16f33cf1 Mon Sep 17 00:00:00 2001 From: Stephan Vock Date: Mon, 21 Mar 2022 14:16:17 +0000 Subject: [PATCH] ArrayLoader: assert that source/dist reference are string values --- src/Composer/Package/Loader/ArrayLoader.php | 4 ++-- .../Test/Package/Loader/ArrayLoaderTest.php | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Composer/Package/Loader/ArrayLoader.php b/src/Composer/Package/Loader/ArrayLoader.php index abebb4163b30..3d315045d965 100644 --- a/src/Composer/Package/Loader/ArrayLoader.php +++ b/src/Composer/Package/Loader/ArrayLoader.php @@ -185,7 +185,7 @@ private function configureObject(PackageInterface $package, array $config): Base } $package->setSourceType($config['source']['type']); $package->setSourceUrl($config['source']['url']); - $package->setSourceReference($config['source']['reference'] ?? null); + $package->setSourceReference(isset($config['source']['reference']) ? (string) $config['source']['reference'] : null); if (isset($config['source']['mirrors'])) { $package->setSourceMirrors($config['source']['mirrors']); } @@ -202,7 +202,7 @@ private function configureObject(PackageInterface $package, array $config): Base } $package->setDistType($config['dist']['type']); $package->setDistUrl($config['dist']['url']); - $package->setDistReference($config['dist']['reference'] ?? null); + $package->setDistReference(isset($config['dist']['reference']) ? (string) $config['dist']['reference'] : null); $package->setDistSha1Checksum($config['dist']['shasum'] ?? null); if (isset($config['dist']['mirrors'])) { $package->setDistMirrors($config['dist']['mirrors']); diff --git a/tests/Composer/Test/Package/Loader/ArrayLoaderTest.php b/tests/Composer/Test/Package/Loader/ArrayLoaderTest.php index fa2a180a9dac..2fb83698b9c5 100644 --- a/tests/Composer/Test/Package/Loader/ArrayLoaderTest.php +++ b/tests/Composer/Test/Package/Loader/ArrayLoaderTest.php @@ -325,4 +325,26 @@ public function testNoneStringVersion(): void $package = $this->loader->load($config); $this->assertSame('1', $package->getPrettyVersion()); } + + public function testNoneStringSourceDistReference(): void + { + $config = array( + 'name' => 'acme/package', + 'version' => 'dev-main', + 'source' => [ + 'type' => 'svn', + 'url' => 'https://example.org/', + 'reference' => 2019, + ], + 'dist' => [ + 'type' => 'zip', + 'url' => 'https://example.org/', + 'reference' => 2019, + ], + ); + + $package = $this->loader->load($config); + $this->assertSame('2019', $package->getSourceReference()); + $this->assertSame('2019', $package->getDistReference()); + } }