diff --git a/src/Symfony/Component/AssetMapper/Factory/MappedAssetFactory.php b/src/Symfony/Component/AssetMapper/Factory/MappedAssetFactory.php index 1d2ba703e6592..14f273b7b474d 100644 --- a/src/Symfony/Component/AssetMapper/Factory/MappedAssetFactory.php +++ b/src/Symfony/Component/AssetMapper/Factory/MappedAssetFactory.php @@ -128,6 +128,6 @@ private function isVendor(string $sourcePath): bool $sourcePath = realpath($sourcePath); $vendorDir = realpath($this->vendorDir); - return $sourcePath && str_starts_with($sourcePath, $vendorDir); + return $sourcePath && $vendorDir && str_starts_with($sourcePath, $vendorDir); } } diff --git a/src/Symfony/Component/AssetMapper/Tests/Factory/MappedAssetFactoryTest.php b/src/Symfony/Component/AssetMapper/Tests/Factory/MappedAssetFactoryTest.php index d4e129a50ccfc..7e3d1641e36a8 100644 --- a/src/Symfony/Component/AssetMapper/Tests/Factory/MappedAssetFactoryTest.php +++ b/src/Symfony/Component/AssetMapper/Tests/Factory/MappedAssetFactoryTest.php @@ -26,6 +26,8 @@ class MappedAssetFactoryTest extends TestCase { + private const DEFAULT_FIXTURES = __DIR__.'/../Fixtures/assets/vendor'; + private AssetMapperInterface&MockObject $assetMapper; public function testCreateMappedAsset() @@ -137,7 +139,15 @@ public function testCreateMappedAssetInVendor() $this->assertTrue($asset->isVendor); } - private function createFactory(?AssetCompilerInterface $extraCompiler = null): MappedAssetFactory + public function testCreateMappedAssetInMissingVendor() + { + $assetMapper = $this->createFactory(null, '/this-path-does-not-exist/'); + $asset = $assetMapper->createMappedAsset('lodash.js', __DIR__.'/../Fixtures/assets/vendor/lodash/lodash.index.js'); + $this->assertSame('lodash.js', $asset->logicalPath); + $this->assertFalse($asset->isVendor); + } + + private function createFactory(?AssetCompilerInterface $extraCompiler = null, ?string $vendorDir = self::DEFAULT_FIXTURES): MappedAssetFactory { $compilers = [ new JavaScriptImportPathCompiler($this->createMock(ImportMapConfigReader::class)), @@ -162,7 +172,7 @@ private function createFactory(?AssetCompilerInterface $extraCompiler = null): M $factory = new MappedAssetFactory( $pathResolver, $compiler, - __DIR__.'/../Fixtures/assets/vendor', + $vendorDir, ); // mock the AssetMapper to behave like normal: by calling back to the factory
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: