From 925935a7e8832f25f7e5f7705c40e52b5eea1244 Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Sat, 2 May 2026 15:33:38 +0100 Subject: [PATCH] wip --- src/Plugins/Tia.php | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/Plugins/Tia.php b/src/Plugins/Tia.php index 9c36ce28..1332bbdb 100644 --- a/src/Plugins/Tia.php +++ b/src/Plugins/Tia.php @@ -49,10 +49,18 @@ final class Tia implements AddsOutput, HandlesArguments, Terminable private const string FILTERED_OPTION = '--filtered'; + private const string LOCALLY_OPTION = '--locally'; + + private const string BASELINED_OPTION = '--baselined'; + private const string ENV_TIA = 'PEST_TIA'; private const string ENV_FILTERED = 'PEST_TIA_FILTERED'; + private const string ENV_LOCALLY = 'PEST_TIA_LOCALLY'; + + private const string ENV_BASELINED = 'PEST_TIA_BASELINED'; + public const string KEY_GRAPH = 'graph.json'; public const string KEY_AFFECTED = 'affected.json'; @@ -178,13 +186,15 @@ final class Tia implements AddsOutput, HandlesArguments, Terminable */ public static function isEnabledForRun(array $arguments): bool { + $watchPatterns = Container::getInstance()->get(WatchPatterns::class); + assert($watchPatterns instanceof WatchPatterns); + + self::applyWatchPatternMarks($arguments, $watchPatterns); + if (in_array(self::OPTION, $arguments, true) || self::envFlagEnabled(self::ENV_TIA)) { return true; } - $watchPatterns = Container::getInstance()->get(WatchPatterns::class); - assert($watchPatterns instanceof WatchPatterns); - if (! $watchPatterns->isEnabled()) { return false; } @@ -192,6 +202,21 @@ final class Tia implements AddsOutput, HandlesArguments, Terminable return ! ($watchPatterns->isLocally() && in_array('--ci', $arguments, true)); } + /** + * @param array $arguments + */ + private static function applyWatchPatternMarks(array $arguments, WatchPatterns $watchPatterns): void + { + if (in_array(self::LOCALLY_OPTION, $arguments, true) || self::envFlagEnabled(self::ENV_LOCALLY)) { + $watchPatterns->markEnabled(); + $watchPatterns->markLocally(); + } + + if (in_array(self::BASELINED_OPTION, $arguments, true) || self::envFlagEnabled(self::ENV_BASELINED)) { + $watchPatterns->markBaselined(); + } + } + private static function envFlagEnabled(string $name): bool { return filter_var(getenv($name), FILTER_VALIDATE_BOOL); @@ -257,6 +282,7 @@ final class Tia implements AddsOutput, HandlesArguments, Terminable /** @var WatchPatterns $watchPatterns */ $watchPatterns = Container::getInstance()->get(WatchPatterns::class); + self::applyWatchPatternMarks($arguments, $watchPatterns); $disabled = $this->hasArgument(self::NO_OPTION, $arguments); $cliEnabled = $this->hasArgument(self::OPTION, $arguments) || self::envFlagEnabled(self::ENV_TIA); $alwaysEnabled = $watchPatterns->isEnabled() @@ -272,6 +298,8 @@ final class Tia implements AddsOutput, HandlesArguments, Terminable $arguments = $this->popArgument(self::FRESH_OPTION, $arguments); $arguments = $this->popArgument(self::REFETCH_OPTION, $arguments); $arguments = $this->popArgument(self::FILTERED_OPTION, $arguments); + $arguments = $this->popArgument(self::LOCALLY_OPTION, $arguments); + $arguments = $this->popArgument(self::BASELINED_OPTION, $arguments); if ($disabled) { $this->forceRefetch = false;