From d2d14760855bebdea56ff39362f778b0009cde05 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Thu, 22 Jun 2023 15:52:15 -0400 Subject: [PATCH] [AssetMapper] Allow DirectoryResource for cache --- .../Factory/CachedMappedAssetFactory.php | 3 ++- .../Tests/Factory/CachedMappedAssetFactoryTest.php | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/AssetMapper/Factory/CachedMappedAssetFactory.php b/src/Symfony/Component/AssetMapper/Factory/CachedMappedAssetFactory.php index cc5e41be27fb8..43ec8e03bf5ae 100644 --- a/src/Symfony/Component/AssetMapper/Factory/CachedMappedAssetFactory.php +++ b/src/Symfony/Component/AssetMapper/Factory/CachedMappedAssetFactory.php @@ -13,6 +13,7 @@ use Symfony\Component\AssetMapper\MappedAsset; use Symfony\Component\Config\ConfigCache; +use Symfony\Component\Config\Resource\DirectoryResource; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\Resource\ResourceInterface; @@ -59,7 +60,7 @@ private function getCacheFilePath(string $logicalPath, string $sourcePath): stri */ private function collectResourcesFromAsset(MappedAsset $mappedAsset): array { - $resources = array_map(fn (string $path) => new FileResource($path), $mappedAsset->getFileDependencies()); + $resources = array_map(fn (string $path) => is_dir($path) ? new DirectoryResource($path) : new FileResource($path), $mappedAsset->getFileDependencies()); $resources[] = new FileResource($mappedAsset->sourcePath); foreach ($mappedAsset->getDependencies() as $dependency) { diff --git a/src/Symfony/Component/AssetMapper/Tests/Factory/CachedMappedAssetFactoryTest.php b/src/Symfony/Component/AssetMapper/Tests/Factory/CachedMappedAssetFactoryTest.php index 311fd52fdcc1e..340b4e3020a2e 100644 --- a/src/Symfony/Component/AssetMapper/Tests/Factory/CachedMappedAssetFactoryTest.php +++ b/src/Symfony/Component/AssetMapper/Tests/Factory/CachedMappedAssetFactoryTest.php @@ -17,6 +17,7 @@ use Symfony\Component\AssetMapper\Factory\MappedAssetFactoryInterface; use Symfony\Component\AssetMapper\MappedAsset; use Symfony\Component\Config\ConfigCache; +use Symfony\Component\Config\Resource\DirectoryResource; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Filesystem\Filesystem; @@ -103,6 +104,7 @@ public function testAssetConfigCacheResourceContainsDependencies() // just adding any file as an example $mappedAsset->addFileDependency(__DIR__.'/../fixtures/importmap.php'); + $mappedAsset->addFileDependency(__DIR__.'/../fixtures/dir3'); $factory = $this->createMock(MappedAssetFactoryInterface::class); $factory->expects($this->once()) @@ -117,13 +119,14 @@ public function testAssetConfigCacheResourceContainsDependencies() $cachedFactory->createMappedAsset('file1.css', $sourcePath); $configCacheMetadata = $this->loadConfigCacheMetadataFor($mappedAsset); - $this->assertCount(4, $configCacheMetadata); + $this->assertCount(5, $configCacheMetadata); $this->assertInstanceOf(FileResource::class, $configCacheMetadata[0]); - $this->assertInstanceOf(FileResource::class, $configCacheMetadata[1]); + $this->assertInstanceOf(DirectoryResource::class, $configCacheMetadata[1]); + $this->assertInstanceOf(FileResource::class, $configCacheMetadata[2]); $this->assertSame(realpath(__DIR__.'/../fixtures/importmap.php'), $configCacheMetadata[0]->getResource()); - $this->assertSame($mappedAsset->sourcePath, $configCacheMetadata[1]->getResource()); - $this->assertSame($dependentOnContentAsset->sourcePath, $configCacheMetadata[2]->getResource()); - $this->assertSame($deeplyNestedAsset->sourcePath, $configCacheMetadata[3]->getResource()); + $this->assertSame($mappedAsset->sourcePath, $configCacheMetadata[2]->getResource()); + $this->assertSame($dependentOnContentAsset->sourcePath, $configCacheMetadata[3]->getResource()); + $this->assertSame($deeplyNestedAsset->sourcePath, $configCacheMetadata[4]->getResource()); } private function loadConfigCacheMetadataFor(MappedAsset $mappedAsset): array