Skip to content

Commit

Permalink
feat: add support for excludedDirs into FileSymbolLoader
Browse files Browse the repository at this point in the history
  • Loading branch information
simPod committed Dec 9, 2022
1 parent 3c9b6c5 commit 02d3660
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
11 changes: 9 additions & 2 deletions src/Symbol/Loader/FileSymbolLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,29 @@

use function array_map;
use function array_merge;
use function is_array;
use function preg_match;

use const DIRECTORY_SEPARATOR;

final class FileSymbolLoader implements SymbolLoaderInterface
{
private FileSymbolProvider $fileSymbolProvider;
/** @var array<string> */
private array $autoloadTypes;
private ?string $baseDir;
/** @var list<string> */
private array $excludedDirs;

/**
* @param array<string> $autoloadTypes
* @param list<string> $excludedDirs
*/
public function __construct(FileSymbolProvider $fileSymbolProvider, array $autoloadTypes)
public function __construct(FileSymbolProvider $fileSymbolProvider, array $autoloadTypes, array $excludedDirs = [])
{
$this->fileSymbolProvider = $fileSymbolProvider;
$this->autoloadTypes = $autoloadTypes;
$this->excludedDirs = $excludedDirs;
}

public function load(PackageInterface $package): Generator
Expand Down Expand Up @@ -54,7 +61,7 @@ public function load(PackageInterface $package): Generator
->ignoreVCS(true)
->ignoreUnreadableDirs()
->followLinks()
->exclude(['vendor']);
->exclude($this->excludedDirs);

$this->fileSymbolProvider->appendFiles($files->getIterator());

Expand Down
6 changes: 4 additions & 2 deletions tests/Integration/AbstractIntegrationTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,9 @@ protected function loadDefinedFileSymbols(
/**
* @param list<string> $autoloadTypes
* @return array<SymbolInterface>
* @param list<string> $excludedDirs
*/
protected function loadConsumedFileSymbols(string $baseDir, array $autoloadTypes = null): array
protected function loadConsumedFileSymbols(string $baseDir, array $autoloadTypes = null, array $excludedDirs = []): array
{
$rootPackage = $this->loadPackage($baseDir);

Expand Down Expand Up @@ -111,7 +112,8 @@ protected function loadConsumedFileSymbols(string $baseDir, array $autoloadTypes
),
new FileContentProvider()
),
$autoloadTypes
$autoloadTypes,
$excludedDirs
);

return iterator_to_array(
Expand Down
11 changes: 11 additions & 0 deletions tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class FileSymbolLoaderTest extends AbstractIntegrationTestCase
private const ONLY_FILE_DEPS = __DIR__ . '/../../../assets/TestProjects/OnlyFileDependencies';
private const AUTOLOAD_FILES_REQUIRE = __DIR__ . '/../../../assets/TestProjects/AutoloadFilesWithRequire';
private const ARRAY_NAMESPACE = __DIR__ . '/../../../assets/TestProjects/ArrayNamespace';
private const CLASSMAP_AUTOLOAD = __DIR__ . '/../../../assets/TestProjects/ClassmapAutoload';

/**
* @test
Expand Down Expand Up @@ -61,4 +62,14 @@ public function itFindsArraySymbols(): void
self::assertArrayHasKey('json_encode', $symbols);
self::assertArrayHasKey('array_keys', $symbols);
}

/**
* @test
*/
public function itSkipsSymbolsInExcludedDirs(): void
{
$symbols = $this->loadConsumedFileSymbols(self::CLASSMAP_AUTOLOAD, [AutoloadType::CLASSMAP], ['Redis']);

self::assertCount(0, $symbols);
}
}

0 comments on commit 02d3660

Please sign in to comment.