pestphp/pest · error · MissingDependency

The [Filter by dirty files] feature requires [git]. Please i

Error message

The [Filter by dirty files] feature requires [git]. Please install it and try again.

What it means

Error "The [Filter by dirty files] feature requires [git]. Please install it and try again." thrown in pestphp/pest.

Source

Thrown at src/TestCaseFilters/GitDirtyTestCaseFilter.php:52

        assert(is_array($this->changedFiles));

        $relativePath = str_replace($this->projectRoot, '', $testCaseFilename);
        $relativePath = str_replace(DIRECTORY_SEPARATOR, '/', $relativePath);

        if (str_starts_with($relativePath, '/')) {
            $relativePath = substr($relativePath, 1);
        }

        return in_array($relativePath, $this->changedFiles, true);
    }

    private function loadChangedFiles(): void
    {
        $status = new Git(timeout: 60.0)->raw(['status', '--short', '--', '*.php']);

        if ($status === null) {
            throw new MissingDependency('Filter by dirty files', 'git');
        }

        $output = preg_split('/\R+/', $status, flags: PREG_SPLIT_NO_EMPTY);
        assert(is_array($output));

        $dirtyFiles = [];

        foreach ($output as $dirtyFile) {
            $dirtyFiles[substr($dirtyFile, 3)] = trim(substr($dirtyFile, 0, 3));
        }

        $dirtyFiles = array_filter($dirtyFiles, fn (string $status): bool => $status !== 'D');

        $dirtyFiles = array_map(
            fn (string $file, string $status): string => in_array($status, ['R', 'RM'], true)
                ? explode(' -> ', $file)[1]
                : $file, array_keys($dirtyFiles), $dirtyFiles,
        );

View on GitHub (pinned to 1af74a215c)

When it happens

Trigger: Thrown at src/TestCaseFilters/GitDirtyTestCaseFilter.php:52 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pestphp/pest@1af74a215c (2026-08-21). Data as JSON: /api/errors/ec1d22731dd22a9a. Report an issue: GitHub.