Add support for end-of-line TODOs

Fixes #87
This commit is contained in:
alstr 2021-11-10 09:44:27 +00:00
parent 3ad11918d0
commit d8373a95ac
4 changed files with 59 additions and 7 deletions

View File

@ -404,7 +404,7 @@ class TodoParser(object):
for marker in block['markers']:
# Check if there are line or block comments.
if marker['type'] == 'line':
comment_pattern = r'(^[+\-\s]\s*' + marker['pattern'] + '.+$)'
comment_pattern = r'(^[+\-\s].*' + marker['pattern'] + '.+$)'
comments = re.finditer(comment_pattern, block['hunk'], re.MULTILINE)
extracted_comments = []
prev_comment = None

View File

@ -89,4 +89,21 @@ index 6397789..494d42f 100644
author: "Alastair Mooney"
-# TODO: Define inputs
-# Need to do this before the action is released
-# labels: urgent
-# labels: urgent
diff --git a/tests/example_file.prog.abap b/tests/example_file.prog.abap
index 6397789..494d42f 100644
--- /dev/null
+++ b/tests/example_file.prog.abap
@@ -1,5 +0,0 @@
-REPORT ztest_todo_2.
-
-DATA moo TYPE i VALUE 2.
-WRITE moo. " TODO This is an end-of-line to-do
-moo = 4. * TODO This is another end-of-line to-do
diff --git a/tests/example_file.sql b/src/tests/example_file.sql
index 6397789..494d42f 100644
--- /dev/null
+++ b/src/tests/example_file.sql
@@ -1,2 +0,0 @@
--- TODO Select all:
-SELECT * FROM Products;

View File

@ -93,4 +93,23 @@ index 0000000..6397789
+author: "Alastair Mooney"
+# TODO: Define inputs
+# Need to do this before the action is released
+# labels: urgent
+# labels: urgent
diff --git a/tests/example_file.prog.abap b/src/tests/example_file.prog.abap
new file mode 100644
index 0000000..7cccc5b
--- /dev/null
+++ b/tests/example_file.prog.abap
@@ -0,0 +1,5 @@
+REPORT ztest_todo_2.
+
+DATA moo TYPE i VALUE 2.
+WRITE moo. " TODO This is an end-of-line to-do
+moo = 4. * TODO This is another end-of-line to-do
diff --git a/tests/example_file.sql b/src/tests/example_file.sql
new file mode 100644
index 0000000..7cccc5b
--- /dev/null
+++ b/src/tests/example_file.sql
@@ -0,0 +1,2 @@
+-- TODO Select all:
+SELECT * FROM Products;

View File

@ -12,7 +12,7 @@ def count_issues_for_file_type(raw_issues, file_type):
class NewIssueTests(unittest.TestCase):
# Check for newly added TODOs across the files specified (covers all current marker types).
# Check for newly added TODOs across the files specified.
def setUp(self):
diff_file = open('tests/test_new.diff', 'r')
self.raw_issues = TodoParser().parse(diff_file)
@ -32,9 +32,18 @@ class NewIssueTests(unittest.TestCase):
def test_ruby_issues(self):
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 3)
def test_abap_issues(self):
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'abap'), 2)
def test_sql_issues(self):
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'sql'), 1)
# TODO: Update tests
# Need tests for Julia, AutoHotKey, Handlebars, Org and TeX, as these markers are not currently covered.
class ClosedIssueTests(unittest.TestCase):
# Check for removed TODOs across the files specified (covers all current marker types).
# Check for removed TODOs across the files specified.
def setUp(self):
diff_file = open('tests/test_closed.diff', 'r')
self.raw_issues = TodoParser().parse(diff_file)
@ -54,10 +63,17 @@ class ClosedIssueTests(unittest.TestCase):
def test_ruby_issues(self):
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 3)
def test_abap_issues(self):
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'abap'), 2)
def test_sql_issues(self):
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'sql'), 1)
class IgnorePatternTests(unittest.TestCase):
def test_single_ignore(self):
os.environ['INPUT_IGNORE'] = '.*\.java'
os.environ['INPUT_IGNORE'] = '.*\\.java'
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)
@ -68,7 +84,7 @@ class IgnorePatternTests(unittest.TestCase):
os.environ['INPUT_IGNORE'] = ''
def test_multiple_ignores(self):
os.environ['INPUT_IGNORE'] = '.*\.java, tests/example-file\.php'
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)