diff --git a/src/ansiblelint/runner.py b/src/ansiblelint/runner.py index b9c54de1ac3..5ce74f97dc2 100644 --- a/src/ansiblelint/runner.py +++ b/src/ansiblelint/runner.py @@ -137,6 +137,11 @@ def worker(lintable: Lintable) -> List[MatchError]: # update list of checked files self.checked_files.update([str(x.path) for x in self.lintables]) + # remove any matches made inside excluded files + matches = list( + filter(lambda match: not self.is_excluded(match.filename), matches) + ) + return sorted(set(matches)) def _emit_matches(self, files: List[Lintable]) -> Generator[MatchError, None, None]: diff --git a/test/TestRunner.py b/test/TestRunner.py index bfd604c32ec..ee612a775eb 100644 --- a/test/TestRunner.py +++ b/test/TestRunner.py @@ -57,6 +57,18 @@ def test_runner(default_rules_collection, playbook, exclude, length) -> None: assert len(matches) == length +def test_runner_exclude_paths(default_rules_collection) -> None: + """Test that exclude paths do work.""" + runner = Runner( + 'examples/playbooks/example.yml', + rules=default_rules_collection, + exclude_paths=['examples/'], + ) + + matches = runner.run() + assert len(matches) == 0 + + @pytest.mark.parametrize( ('formatter_cls'), (