diff --git a/README.md b/README.md
index be2ec6e19..ee54242a6 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@ Here are the available rules:
### 1. Find duplicated definitions contents (`duplicated-contents`)
-Some definitions have similar masks, even identical contents:
+Some definitions have similar patterns, even identical contents:
```php
use Behat\Step\When;
@@ -53,7 +53,7 @@ public function loadUserProfile()
}
```
-Better use a one definition with single mask, to make your tests more precise and easier to maintain.
+Better use a one definition with single pattern, to make your tests more precise and easier to maintain.
diff --git a/rector.php b/rector.php
index 3a97a08e7..be74166c8 100644
--- a/rector.php
+++ b/rector.php
@@ -22,7 +22,7 @@
->withSkip([
\Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class => [
// keep string class names
- __DIR__ . '/src/Resolver/ClassMethodMasksResolver.php',
+ __DIR__ . '/src/Resolver/ClassMethodPatternResolver.php',
],
])
->withImportNames()
diff --git a/src/Analyzer/ContextDefinitionsAnalyzer.php b/src/Analyzer/ContextDefinitionsAnalyzer.php
index 33b8dbebd..1ed6bd0c0 100644
--- a/src/Analyzer/ContextDefinitionsAnalyzer.php
+++ b/src/Analyzer/ContextDefinitionsAnalyzer.php
@@ -10,7 +10,7 @@
use PhpParser\NodeFinder;
use PhpParser\PrettyPrinter\Standard;
use Rector\Behastan\PhpParser\SimplePhpParser;
-use Rector\Behastan\Resolver\ClassMethodMasksResolver;
+use Rector\Behastan\Resolver\ClassMethodPatternResolver;
use Rector\Behastan\ValueObject\ContextDefinition;
use Symfony\Component\Finder\SplFileInfo;
@@ -25,7 +25,7 @@ public function __construct(
private readonly SimplePhpParser $simplePhpParser,
private readonly NodeFinder $nodeFinder,
private readonly Standard $printerStandard,
- private readonly ClassMethodMasksResolver $classMethodMasksResolver,
+ private readonly ClassMethodPatternResolver $classMethodPatternResolver,
) {
}
@@ -84,10 +84,10 @@ public function resolveAndGroupByContentHash(array $contextFileInfos): array
}
$classMethodHash = $this->createClassMethodHash($classMethod);
- $rawMasks = $this->classMethodMasksResolver->resolve($classMethod);
+ $rawPatterns = $this->classMethodPatternResolver->resolve($classMethod);
- // no masks :(
- if ($rawMasks === []) {
+ // no patterns found :(
+ if ($rawPatterns === []) {
continue;
}
@@ -95,8 +95,8 @@ public function resolveAndGroupByContentHash(array $contextFileInfos): array
$contextFileInfo->getRealPath(),
$className,
$classMethod->name->toString(),
- // @todo what about multiple masks?
- $rawMasks[0],
+ // @todo what about multiple patterns?
+ $rawPatterns[0],
$classMethod->getStartLine()
);
diff --git a/src/Analyzer/MaskAnalyzer.php b/src/Analyzer/MaskAnalyzer.php
deleted file mode 100644
index c575fffce..000000000
--- a/src/Analyzer/MaskAnalyzer.php
+++ /dev/null
@@ -1,29 +0,0 @@
-getFilename(), '.feature');
}
- $maskCollection = $this->definitionMasksExtractor->extract($contextFiles);
+ $patternCollection = $this->definitionPatternsExtractor->extract($contextFiles);
$featureInstructions = $this->usedInstructionResolver->resolveInstructionsFromFeatureFiles($featureFiles);
- //$maskProgressBar = $this->outputPrinter->createProgressBar($maskCollection->count());
- $unusedMasks = [];
- foreach ($maskCollection->all() as $mask) {
- // $maskProgressBar->advance();
-
- if ($this->isMaskUsed($mask, $featureInstructions)) {
+ $unusedPatterns = [];
+ foreach ($patternCollection->all() as $pattern) {
+ if ($this->isPatternUsed($pattern, $featureInstructions)) {
continue;
}
- $unusedMasks[] = $mask;
+ $unusedPatterns[] = $pattern;
}
- // $maskProgressBar->finish();
-
- return $unusedMasks;
+ return $unusedPatterns;
}
/**
@@ -90,27 +84,27 @@ private function isRegexDefinitionUsed(string $regexBehatDefinition, array $feat
/**
* @param string[] $featureInstructions
*/
- private function isMaskUsed(AbstractMask $mask, array $featureInstructions): bool
+ private function isPatternUsed(AbstractPattern $pattern, array $featureInstructions): bool
{
- if ($mask instanceof SkippedMask) {
+ if ($pattern instanceof SkippedPattern) {
return true;
}
// is used?
- if ($mask instanceof ExactMask && in_array($mask->mask, $featureInstructions, true)) {
+ if ($pattern instanceof ExactPattern && in_array($pattern->pattern, $featureInstructions, true)) {
return true;
}
// is used?
- if ($mask instanceof RegexMask && $this->isRegexDefinitionUsed($mask->mask, $featureInstructions)) {
+ if ($pattern instanceof RegexPattern && $this->isRegexDefinitionUsed($pattern->pattern, $featureInstructions)) {
return true;
}
- if ($mask instanceof NamedMask) {
- // normalize :mask definition to regex
- $regexMask = '#' . Strings::replace($mask->mask, self::MASK_VALUE_REGEX, '(.*?)') . '#';
+ if ($pattern instanceof NamedPattern) {
+ // normalize :pattern definition to regex
+ $regexPattern = '#' . Strings::replace($pattern->pattern, self::PATTERN_VALUE_REGEX, '(.*?)') . '#';
- if ($this->isRegexDefinitionUsed($regexMask, $featureInstructions)) {
+ if ($this->isRegexDefinitionUsed($regexPattern, $featureInstructions)) {
return true;
}
}
diff --git a/src/Command/AnalyzeCommand.php b/src/Command/AnalyzeCommand.php
index 11c5f958c..56deb7342 100644
--- a/src/Command/AnalyzeCommand.php
+++ b/src/Command/AnalyzeCommand.php
@@ -7,9 +7,9 @@
use Entropy\Console\Contract\CommandInterface;
use Entropy\Console\Enum\ExitCode;
use Entropy\Console\Output\OutputPrinter;
-use Rector\Behastan\DefinitionMasksExtractor;
+use Rector\Behastan\DefinitionPatternsExtractor;
use Rector\Behastan\Finder\BehatMetafilesFinder;
-use Rector\Behastan\Reporting\MaskCollectionStatsPrinter;
+use Rector\Behastan\Reporting\PatternCollectionStatsPrinter;
use Rector\Behastan\RulesRegistry;
use Rector\Behastan\ValueObject\RuleError;
use Webmozart\Assert\Assert;
@@ -17,8 +17,8 @@
final readonly class AnalyzeCommand implements CommandInterface
{
public function __construct(
- private DefinitionMasksExtractor $definitionMasksExtractor,
- private MaskCollectionStatsPrinter $maskCollectionStatsPrinter,
+ private DefinitionPatternsExtractor $definitionPatternsExtractor,
+ private PatternCollectionStatsPrinter $patternCollectionStatsPrinter,
private OutputPrinter $outputPrinter,
private RulesRegistry $rulesRegistry,
) {
@@ -65,12 +65,12 @@ public function run(?string $projectDirectory = null, array $skip = []): int
count($contextFileInfos),
count($featureFileInfos)
));
- $this->outputPrinter->writeln('Extracting definitions masks...>');
+ $this->outputPrinter->writeln('Extracting definitions patterns...>');
- $maskCollection = $this->definitionMasksExtractor->extract($contextFileInfos);
+ $patternCollection = $this->definitionPatternsExtractor->extract($contextFileInfos);
$this->outputPrinter->newLine();
- $this->maskCollectionStatsPrinter->print($maskCollection);
+ $this->patternCollectionStatsPrinter->print($patternCollection);
$this->outputPrinter->newLine();
$this->outputPrinter->writeln('Running analysis...>');
@@ -85,7 +85,7 @@ public function run(?string $projectDirectory = null, array $skip = []): int
continue;
}
- $ruleErrors = $rule->process($contextFileInfos, $featureFileInfos, $maskCollection, $projectDirectory);
+ $ruleErrors = $rule->process($contextFileInfos, $featureFileInfos, $patternCollection, $projectDirectory);
$allRuleErrors = array_merge($allRuleErrors, $ruleErrors);
}
diff --git a/src/Contract/MaskInterface.php b/src/Contract/PatternInterface.php
similarity index 73%
rename from src/Contract/MaskInterface.php
rename to src/Contract/PatternInterface.php
index 4880470c0..bb94fff47 100644
--- a/src/Contract/MaskInterface.php
+++ b/src/Contract/PatternInterface.php
@@ -4,6 +4,6 @@
namespace Rector\Behastan\Contract;
-interface MaskInterface
+interface PatternInterface
{
}
diff --git a/src/Contract/RuleInterface.php b/src/Contract/RuleInterface.php
index 8c318b20b..67817957a 100644
--- a/src/Contract/RuleInterface.php
+++ b/src/Contract/RuleInterface.php
@@ -5,7 +5,7 @@
namespace Rector\Behastan\Contract;
use Rector\Behastan\Enum\RuleIdentifier;
-use Rector\Behastan\ValueObject\MaskCollection;
+use Rector\Behastan\ValueObject\PatternCollection;
use Rector\Behastan\ValueObject\RuleError;
use Symfony\Component\Finder\SplFileInfo;
@@ -20,7 +20,7 @@ interface RuleInterface
public function process(
array $contextFiles,
array $featureFiles,
- MaskCollection $maskCollection,
+ PatternCollection $patternCollection,
string $projectDirectory
): array;
diff --git a/src/DefinitionMasksExtractor.php b/src/DefinitionPatternsExtractor.php
similarity index 76%
rename from src/DefinitionMasksExtractor.php
rename to src/DefinitionPatternsExtractor.php
index a2e2d84b6..e6ed4a3cf 100644
--- a/src/DefinitionMasksExtractor.php
+++ b/src/DefinitionPatternsExtractor.php
@@ -4,36 +4,36 @@
namespace Rector\Behastan;
+use Entropy\Attributes\RelatedTest;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Class_;
use PhpParser\NodeFinder;
-use Rector\Behastan\Analyzer\MaskAnalyzer;
+use Rector\Behastan\Analyzer\PatternAnalyzer;
use Rector\Behastan\PhpParser\SimplePhpParser;
-use Rector\Behastan\Resolver\ClassMethodMasksResolver;
+use Rector\Behastan\Resolver\ClassMethodPatternResolver;
+use Rector\Behastan\Tests\DefinitionPatternExtractor\DefinitionPatternExtractorTest;
use Rector\Behastan\ValueObject\ContextDefinition;
-use Rector\Behastan\ValueObject\Mask\ExactMask;
-use Rector\Behastan\ValueObject\Mask\NamedMask;
-use Rector\Behastan\ValueObject\Mask\RegexMask;
-use Rector\Behastan\ValueObject\Mask\SkippedMask;
-use Rector\Behastan\ValueObject\MaskCollection;
+use Rector\Behastan\ValueObject\Pattern\ExactPattern;
+use Rector\Behastan\ValueObject\Pattern\NamedPattern;
+use Rector\Behastan\ValueObject\Pattern\RegexPattern;
+use Rector\Behastan\ValueObject\Pattern\SkippedPattern;
+use Rector\Behastan\ValueObject\PatternCollection;
use SplFileInfo;
-/**
- * @see \Rector\Behastan\Tests\DefinitionMasksExtractor\DefinitionMasksExtractorTest
- */
-final readonly class DefinitionMasksExtractor
+#[RelatedTest(DefinitionPatternExtractorTest::class)]
+final readonly class DefinitionPatternsExtractor
{
public function __construct(
private SimplePhpParser $simplePhpParser,
private NodeFinder $nodeFinder,
- private ClassMethodMasksResolver $classMethodMasksResolver,
+ private ClassMethodPatternResolver $classMethodPatternResolver,
) {
}
/**
* @param SplFileInfo[] $contextFiles
*/
- public function extract(array $contextFiles): MaskCollection
+ public function extract(array $contextFiles): PatternCollection
{
$masks = [];
@@ -44,7 +44,7 @@ public function extract(array $contextFiles): MaskCollection
// @todo edge case - handle next
if (str_contains($rawMask, ' [:')) {
- $masks[] = new SkippedMask(
+ $masks[] = new SkippedPattern(
$rawMask,
$classMethodContextDefinition->getFilePath(),
$classMethodContextDefinition->getMethodLine(),
@@ -55,8 +55,8 @@ public function extract(array $contextFiles): MaskCollection
}
// regex pattern, handled else-where
- if (MaskAnalyzer::isRegex($rawMask)) {
- $masks[] = new RegexMask(
+ if (PatternAnalyzer::isRegex($rawMask)) {
+ $masks[] = new RegexPattern(
$rawMask,
$classMethodContextDefinition->getFilePath(),
$classMethodContextDefinition->getMethodLine(),
@@ -67,9 +67,9 @@ public function extract(array $contextFiles): MaskCollection
}
// handled in mask one
- if (MaskAnalyzer::isValueMask($rawMask)) {
+ if (PatternAnalyzer::isValuePattern($rawMask)) {
// if (str_contains($rawMask, ':')) {
- $masks[] = new NamedMask(
+ $masks[] = new NamedPattern(
$rawMask,
$classMethodContextDefinition->getFilePath(),
$classMethodContextDefinition->getMethodLine(),
@@ -82,7 +82,7 @@ public function extract(array $contextFiles): MaskCollection
// remove \/ escape from mask
$rawMask = str_replace('\/', '/', $rawMask);
- $masks[] = new ExactMask(
+ $masks[] = new ExactPattern(
$rawMask,
$classMethodContextDefinition->getFilePath(),
$classMethodContextDefinition->getMethodLine(),
@@ -91,7 +91,7 @@ public function extract(array $contextFiles): MaskCollection
);
}
- return new MaskCollection($masks);
+ return new PatternCollection($masks);
}
/**
@@ -123,7 +123,7 @@ private function resolveMasksFromFiles(array $fileInfos): array
$className = $class->namespacedName->toString();
foreach ($class->getMethods() as $classMethod) {
- $rawMasks = $this->classMethodMasksResolver->resolve($classMethod);
+ $rawMasks = $this->classMethodPatternResolver->resolve($classMethod);
foreach ($rawMasks as $rawMask) {
$classMethodContextDefinitions[] = new ContextDefinition(
diff --git a/src/DependencyInjection/ContainerFactory.php b/src/DependencyInjection/ContainerFactory.php
index ad64ef281..35f59507b 100644
--- a/src/DependencyInjection/ContainerFactory.php
+++ b/src/DependencyInjection/ContainerFactory.php
@@ -17,9 +17,12 @@ public static function create(): Container
$container->autodiscover(__DIR__ . '/../Rule');
$container->autodiscover(__DIR__ . '/../Command');
- $container->service(RulesRegistry::class, function (Container $container) {
- return new RulesRegistry($container->findByContract(RuleInterface::class));
- });
+ $container->service(
+ RulesRegistry::class,
+ fn (Container $container): RulesRegistry => new RulesRegistry($container->findByContract(
+ RuleInterface::class
+ ))
+ );
return $container;
}
diff --git a/src/Enum/RuleIdentifier.php b/src/Enum/RuleIdentifier.php
index 0d8348cac..eb81579eb 100644
--- a/src/Enum/RuleIdentifier.php
+++ b/src/Enum/RuleIdentifier.php
@@ -14,7 +14,7 @@ final class RuleIdentifier
/**
* @var string
*/
- public const DUPLICATED_MASKS = 'duplicated-masks';
+ public const DUPLICATED_PATTERNS = 'duplicated-patterns';
/**
* @var string
diff --git a/src/Reporting/MaskCollectionStatsPrinter.php b/src/Reporting/MaskCollectionStatsPrinter.php
deleted file mode 100644
index 49b3ecad2..000000000
--- a/src/Reporting/MaskCollectionStatsPrinter.php
+++ /dev/null
@@ -1,51 +0,0 @@
-outputPrinter->writeln(sprintf('Found %d masks:', $maskCollection->count()));
- $this->outputPrinter->writeln(sprintf(' * %d exact', $maskCollection->countByType(ExactMask::class)));
- $this->outputPrinter->writeln(sprintf(' * %d /regex/', $maskCollection->countByType(RegexMask::class)));
- $this->outputPrinter->writeln(sprintf(' * %d :named', $maskCollection->countByType(NamedMask::class)));
-
- $this->printSkippedMasks($maskCollection);
- }
-
- private function printSkippedMasks(MaskCollection $maskCollection): void
- {
- $skippedMasks = $maskCollection->byType(SkippedMask::class);
- if ($skippedMasks === []) {
- return;
- }
-
- $skippedMasksValues = [];
- foreach ($skippedMasks as $skippedMask) {
- $skippedMasksValues[] = $skippedMask->mask;
- }
-
- $skippedMasksString = implode('", "', $skippedMasksValues);
-
- $this->outputPrinter->writeln(sprintf(
- ' * %d skipped ("%s")',
- $maskCollection->countByType(SkippedMask::class),
- $skippedMasksString
- ));
- }
-}
diff --git a/src/Reporting/PatternCollectionStatsPrinter.php b/src/Reporting/PatternCollectionStatsPrinter.php
new file mode 100644
index 000000000..d782bdae7
--- /dev/null
+++ b/src/Reporting/PatternCollectionStatsPrinter.php
@@ -0,0 +1,51 @@
+outputPrinter->writeln(sprintf('Found %d patterns:', $patternCollection->count()));
+ $this->outputPrinter->writeln(sprintf(' * %d exact', $patternCollection->countByType(ExactPattern::class)));
+ $this->outputPrinter->writeln(sprintf(' * %d /regex/', $patternCollection->countByType(RegexPattern::class)));
+ $this->outputPrinter->writeln(sprintf(' * %d :named', $patternCollection->countByType(NamedPattern::class)));
+
+ $this->printSkippedMasks($patternCollection);
+ }
+
+ private function printSkippedMasks(PatternCollection $patternCollection): void
+ {
+ $skippedMasks = $patternCollection->byType(SkippedPattern::class);
+ if ($skippedMasks === []) {
+ return;
+ }
+
+ $skippedMasksValues = [];
+ foreach ($skippedMasks as $skippedMask) {
+ $skippedMasksValues[] = $skippedMask->pattern;
+ }
+
+ $skippedMasksString = implode('", "', $skippedMasksValues);
+
+ $this->outputPrinter->writeln(sprintf(
+ ' * %d skipped ("%s")',
+ $patternCollection->countByType(SkippedPattern::class),
+ $skippedMasksString
+ ));
+ }
+}
diff --git a/src/Resolver/ClassMethodMasksResolver.php b/src/Resolver/ClassMethodPatternResolver.php
similarity index 88%
rename from src/Resolver/ClassMethodMasksResolver.php
rename to src/Resolver/ClassMethodPatternResolver.php
index 6f0dd6598..d1fa2c104 100644
--- a/src/Resolver/ClassMethodMasksResolver.php
+++ b/src/Resolver/ClassMethodPatternResolver.php
@@ -8,7 +8,7 @@
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassMethod;
-final class ClassMethodMasksResolver
+final class ClassMethodPatternResolver
{
/**
* @var string
@@ -20,14 +20,14 @@ final class ClassMethodMasksResolver
*/
public function resolve(ClassMethod $classMethod): array
{
- $rawMasks = [];
+ $rawPatterns = [];
// 1. collect from docblock
if ($classMethod->getDocComment() instanceof Doc) {
preg_match_all(self::INSTRUCTION_DOCBLOCK_REGEX, $classMethod->getDocComment()->getText(), $match);
foreach ($match['instruction'] as $instruction) {
- $rawMasks[] = $this->clearMask($instruction);
+ $rawPatterns[] = $this->clearMask($instruction);
}
}
@@ -46,11 +46,11 @@ public function resolve(ClassMethod $classMethod): array
continue;
}
- $rawMasks[] = $firstArgValue->value;
+ $rawPatterns[] = $firstArgValue->value;
}
}
- return $rawMasks;
+ return $rawPatterns;
}
private function clearMask(string $mask): string
diff --git a/src/Rule/DuplicatedContextDefinitionContentsRule.php b/src/Rule/DuplicatedContextDefinitionContentsRule.php
index 7415f9ba1..fd1b548d9 100644
--- a/src/Rule/DuplicatedContextDefinitionContentsRule.php
+++ b/src/Rule/DuplicatedContextDefinitionContentsRule.php
@@ -7,7 +7,7 @@
use Rector\Behastan\Analyzer\ContextDefinitionsAnalyzer;
use Rector\Behastan\Contract\RuleInterface;
use Rector\Behastan\Enum\RuleIdentifier;
-use Rector\Behastan\ValueObject\MaskCollection;
+use Rector\Behastan\ValueObject\PatternCollection;
use Rector\Behastan\ValueObject\RuleError;
use Symfony\Component\Finder\SplFileInfo;
@@ -27,7 +27,7 @@ public function __construct(
public function process(
array $contextFiles,
array $featureFiles,
- MaskCollection $maskCollection,
+ PatternCollection $patternCollection,
string $projectDirectory
): array {
$contextDefinitionByContentHash = $this->contextDefinitionsAnalyzer->resolveAndGroupByContentHash(
diff --git a/src/Rule/DuplicatedMaskRule.php b/src/Rule/DuplicatedMaskRule.php
index 48bc750fd..0fac472ee 100644
--- a/src/Rule/DuplicatedMaskRule.php
+++ b/src/Rule/DuplicatedMaskRule.php
@@ -8,7 +8,7 @@
use Rector\Behastan\Contract\RuleInterface;
use Rector\Behastan\Enum\RuleIdentifier;
use Rector\Behastan\ValueObject\ContextDefinition;
-use Rector\Behastan\ValueObject\MaskCollection;
+use Rector\Behastan\ValueObject\PatternCollection;
use Rector\Behastan\ValueObject\RuleError;
use Symfony\Component\Finder\SplFileInfo;
@@ -27,7 +27,7 @@ public function __construct(
public function process(
array $contextFiles,
array $featureFiles,
- MaskCollection $maskCollection,
+ PatternCollection $patternCollection,
string $projectDirectory
): array {
// 1. find duplicated masks, e.g. if 2 methods have the same mask, its a race condition problem
@@ -66,6 +66,6 @@ public function process(
public function getIdentifier(): string
{
- return RuleIdentifier::DUPLICATED_MASKS;
+ return RuleIdentifier::DUPLICATED_PATTERNS;
}
}
diff --git a/src/Rule/UnusedContextDefinitionsRule.php b/src/Rule/UnusedContextDefinitionsRule.php
index 8915a3b23..1fec97c3b 100644
--- a/src/Rule/UnusedContextDefinitionsRule.php
+++ b/src/Rule/UnusedContextDefinitionsRule.php
@@ -7,7 +7,7 @@
use Rector\Behastan\Analyzer\UnusedDefinitionsAnalyzer;
use Rector\Behastan\Contract\RuleInterface;
use Rector\Behastan\Enum\RuleIdentifier;
-use Rector\Behastan\ValueObject\MaskCollection;
+use Rector\Behastan\ValueObject\PatternCollection;
use Rector\Behastan\ValueObject\RuleError;
use Symfony\Component\Finder\SplFileInfo;
@@ -26,17 +26,17 @@ public function __construct(
public function process(
array $contextFiles,
array $featureFiles,
- MaskCollection $maskCollection,
+ PatternCollection $patternCollection,
string $projectDirectory
): array {
- $unusedMasks = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles, $maskCollection);
+ $unusedMasks = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles, $patternCollection);
$ruleErrors = [];
foreach ($unusedMasks as $unusedMask) {
$errorMessage = sprintf(
'The mask "%s" and its definition %s::%s() is never used',
- $unusedMask->mask,
+ $unusedMask->pattern,
$unusedMask->className,
$unusedMask->methodName
);
diff --git a/src/ValueObject/Mask/ExactMask.php b/src/ValueObject/Mask/ExactMask.php
deleted file mode 100644
index 6e2e0c6de..000000000
--- a/src/ValueObject/Mask/ExactMask.php
+++ /dev/null
@@ -1,9 +0,0 @@
- $type
+ * @param class-string $type
*/
public function countByType(string $type): int
{
@@ -31,7 +31,7 @@ public function count(): int
}
/**
- * @return AbstractMask[]
+ * @return AbstractPattern[]
*/
public function all(): array
{
@@ -39,13 +39,13 @@ public function all(): array
}
/**
- * @template TMask as AbstractMask
+ * @template TMask as AbstractPattern
*
* @param class-string $type
* @return TMask[]
*/
public function byType(string $type): array
{
- return array_filter($this->masks, fn (AbstractMask $mask): bool => $mask instanceof $type);
+ return array_filter($this->masks, fn (AbstractPattern $pattern): bool => $pattern instanceof $type);
}
}
diff --git a/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedMasks/BehatContext.php b/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedPattern/BehatContext.php
similarity index 100%
rename from tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedMasks/BehatContext.php
rename to tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedPattern/BehatContext.php
diff --git a/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedMasks/some.feature b/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedPattern/some.feature
similarity index 100%
rename from tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedMasks/some.feature
rename to tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedPattern/some.feature
diff --git a/tests/Analyzer/UnusedDefinitionsAnalyzer/UnusedDefinitionsAnalyzerTest.php b/tests/Analyzer/UnusedDefinitionsAnalyzer/UnusedDefinitionsAnalyzerTest.php
index 6c2098564..e13abdc8c 100644
--- a/tests/Analyzer/UnusedDefinitionsAnalyzer/UnusedDefinitionsAnalyzerTest.php
+++ b/tests/Analyzer/UnusedDefinitionsAnalyzer/UnusedDefinitionsAnalyzerTest.php
@@ -5,23 +5,23 @@
namespace Rector\Behastan\Tests\Analyzer\UnusedDefinitionsAnalyzer;
use Rector\Behastan\Analyzer\UnusedDefinitionsAnalyzer;
-use Rector\Behastan\DefinitionMasksExtractor;
+use Rector\Behastan\DefinitionPatternsExtractor;
use Rector\Behastan\Finder\BehatMetafilesFinder;
use Rector\Behastan\Tests\AbstractTestCase;
-use Rector\Behastan\ValueObject\Mask\AbstractMask;
+use Rector\Behastan\ValueObject\Pattern\AbstractPattern;
final class UnusedDefinitionsAnalyzerTest extends AbstractTestCase
{
private UnusedDefinitionsAnalyzer $unusedDefinitionsAnalyzer;
- private DefinitionMasksExtractor $definitionMasksExtractor;
+ private DefinitionPatternsExtractor $definitionPatternsExtractor;
protected function setUp(): void
{
parent::setUp();
$this->unusedDefinitionsAnalyzer = $this->make(UnusedDefinitionsAnalyzer::class);
- $this->definitionMasksExtractor = $this->make(DefinitionMasksExtractor::class);
+ $this->definitionPatternsExtractor = $this->make(DefinitionPatternsExtractor::class);
}
public function testEverythingUsed(): void
@@ -32,31 +32,35 @@ public function testEverythingUsed(): void
$this->assertCount(1, $featureFiles);
$this->assertCount(1, $contextFiles);
- $maskCollection = $this->definitionMasksExtractor->extract($contextFiles);
+ $patternCollection = $this->definitionPatternsExtractor->extract($contextFiles);
- $unusedDefinitions = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles, $maskCollection);
+ $unusedDefinitions = $this->unusedDefinitionsAnalyzer->analyse(
+ $contextFiles,
+ $featureFiles,
+ $patternCollection
+ );
$this->assertCount(0, $unusedDefinitions);
}
- public function testFoundMask(): void
+ public function testFoundPattern(): void
{
- $featureFiles = BehatMetafilesFinder::findFeatureFiles([__DIR__ . '/Fixture/UnusedMasks']);
- $contextFiles = BehatMetafilesFinder::findContextFiles([__DIR__ . '/Fixture/UnusedMasks']);
+ $featureFiles = BehatMetafilesFinder::findFeatureFiles([__DIR__ . '/Fixture/UnusedPattern']);
+ $contextFiles = BehatMetafilesFinder::findContextFiles([__DIR__ . '/Fixture/UnusedPattern']);
$this->assertCount(1, $featureFiles);
$this->assertCount(1, $contextFiles);
- $maskCollection = $this->definitionMasksExtractor->extract($contextFiles);
+ $patternCollection = $this->definitionPatternsExtractor->extract($contextFiles);
- $unusedMasks = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles, $maskCollection);
+ $unusedMasks = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles, $patternCollection);
$this->assertCount(1, $unusedMasks);
- $this->assertContainsOnlyInstancesOf(AbstractMask::class, $unusedMasks);
+ $this->assertContainsOnlyInstancesOf(AbstractPattern::class, $unusedMasks);
- /** @var AbstractMask $unusedMask */
+ /** @var AbstractPattern $unusedMask */
$unusedMask = $unusedMasks[0];
- $this->assertSame(__DIR__ . '/Fixture/UnusedMasks/BehatContext.php', $unusedMask->filePath);
- $this->assertSame('never used', $unusedMask->mask);
+ $this->assertSame(__DIR__ . '/Fixture/UnusedPattern/BehatContext.php', $unusedMask->filePath);
+ $this->assertSame('never used', $unusedMask->pattern);
}
}
diff --git a/tests/DefinitionMasksExtractor/DefinitionMasksExtractorTest.php b/tests/DefinitionMasksExtractor/DefinitionMasksExtractorTest.php
deleted file mode 100644
index b9c8140d0..000000000
--- a/tests/DefinitionMasksExtractor/DefinitionMasksExtractorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-definitionMasksExtractor = $this->make(DefinitionMasksExtractor::class);
- $this->behatMetafilesFinder = $this->make(BehatMetafilesFinder::class);
- }
-
- public function test(): void
- {
- $contextFileInfos = $this->behatMetafilesFinder->findContextFiles([__DIR__ . '/Fixture']);
- $maskCollection = $this->definitionMasksExtractor->extract($contextFileInfos);
-
- $this->assertCount(3, $maskCollection->all());
-
- $exactMasks = $maskCollection->byType(ExactMask::class);
- $this->assertCount(3, $exactMasks);
- $this->assertContainsOnlyInstancesOf(ExactMask::class, $exactMasks);
-
- $firstExactMask = $exactMasks[0];
-
- $this->assertSame('I click homepage', $firstExactMask->mask);
- $this->assertSame(AnotherBehatContext::class, $firstExactMask->className);
- $this->assertSame(__DIR__ . '/Fixture/AnotherBehatContext.php', $firstExactMask->filePath);
-
- $slashMask = $exactMasks[2];
-
- $this->assertSame('Do this and / that', $slashMask->mask);
- }
-}
diff --git a/tests/DefinitionPatternExtractor/DefinitionPatternExtractorTest.php b/tests/DefinitionPatternExtractor/DefinitionPatternExtractorTest.php
new file mode 100644
index 000000000..9329192b0
--- /dev/null
+++ b/tests/DefinitionPatternExtractor/DefinitionPatternExtractorTest.php
@@ -0,0 +1,48 @@
+definitionPatternsExtractor = $this->make(DefinitionPatternsExtractor::class);
+ $this->behatMetafilesFinder = $this->make(BehatMetafilesFinder::class);
+ }
+
+ public function test(): void
+ {
+ $contextFileInfos = $this->behatMetafilesFinder->findContextFiles([__DIR__ . '/Fixture']);
+ $patternCollection = $this->definitionPatternsExtractor->extract($contextFileInfos);
+
+ $this->assertCount(3, $patternCollection->all());
+
+ $exactMasks = $patternCollection->byType(ExactPattern::class);
+ $this->assertCount(3, $exactMasks);
+ $this->assertContainsOnlyInstancesOf(ExactPattern::class, $exactMasks);
+
+ $firstExactMask = $exactMasks[0];
+
+ $this->assertSame('I click homepage', $firstExactMask->pattern);
+ $this->assertSame(AnotherBehatContext::class, $firstExactMask->className);
+ $this->assertSame(__DIR__ . '/Fixture/AnotherBehatContext.php', $firstExactMask->filePath);
+
+ $slashMask = $exactMasks[2];
+
+ $this->assertSame('Do this and / that', $slashMask->pattern);
+ }
+}
diff --git a/tests/DefinitionMasksExtractor/Fixture/AnotherBehatContext.php b/tests/DefinitionPatternExtractor/Fixture/AnotherBehatContext.php
similarity index 83%
rename from tests/DefinitionMasksExtractor/Fixture/AnotherBehatContext.php
rename to tests/DefinitionPatternExtractor/Fixture/AnotherBehatContext.php
index ec8b2fa0c..36dd8104d 100644
--- a/tests/DefinitionMasksExtractor/Fixture/AnotherBehatContext.php
+++ b/tests/DefinitionPatternExtractor/Fixture/AnotherBehatContext.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Rector\Behastan\Tests\DefinitionMasksExtractor\Fixture;
+namespace Rector\Behastan\Tests\DefinitionPatternExtractor\Fixture;
use Behat\Step\Then;