From bec4b579f8d63e990868ce909858d7acb1afb16e Mon Sep 17 00:00:00 2001 From: Timothy Morey Date: Mon, 20 Sep 2021 12:45:07 -0400 Subject: [PATCH] extend to support a comma-delimited list of patterns --- action.yml | 2 +- main.py | 9 +++++---- tests/test_todo_parser.py | 11 +++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/action.yml b/action.yml index 5721d4a..65cdf02 100644 --- a/action.yml +++ b/action.yml @@ -52,5 +52,5 @@ inputs: description: "Default organisation projects" required: false IGNORE: - description: "A regular expression that matches files that should be ignored when searching for TODOs" + description: "A collection of comma-delimited regular expression that matches files that should be ignored when searching for TODOs" required: false diff --git a/main.py b/main.py index 341e55b..5327578 100644 --- a/main.py +++ b/main.py @@ -607,10 +607,11 @@ class TodoParser(object): return projects def _should_ignore(self, file): - ignore_pattern = os.getenv('INPUT_IGNORE', None) - if ignore_pattern: - if re.match(ignore_pattern, file): - return True + ignore_patterns = os.getenv('INPUT_IGNORE', None) + if ignore_patterns: + for pattern in filter(None, [pattern.strip() for pattern in ignore_patterns.split(',')]): + if re.match(pattern, file): + return True return False diff --git a/tests/test_todo_parser.py b/tests/test_todo_parser.py index 9a023e8..3d44f55 100644 --- a/tests/test_todo_parser.py +++ b/tests/test_todo_parser.py @@ -66,3 +66,14 @@ class IgnorePatternTests(unittest.TestCase): self.assertEqual(count_issues_for_file_type(self.raw_issues, 'java'), 0) self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 3) os.environ['INPUT_IGNORE'] = '' + + def test_multiple_ignores(self): + os.environ['INPUT_IGNORE'] = '.*\.java, tests/example-file\.php' + diff_file = open('tests/test_new.diff', 'r') + self.raw_issues = TodoParser().parse(diff_file) + self.assertEqual(count_issues_for_file_type(self.raw_issues, 'python'), 2) + self.assertEqual(count_issues_for_file_type(self.raw_issues, 'yaml'), 2) + self.assertEqual(count_issues_for_file_type(self.raw_issues, 'php'), 0) + self.assertEqual(count_issues_for_file_type(self.raw_issues, 'java'), 0) + self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 3) + os.environ['INPUT_IGNORE'] = ''