mirror of
https://github.com/ditkrg/todo-to-issue-action.git
synced 2026-01-22 22:06:43 +00:00
187 lines
7.3 KiB
Python
187 lines
7.3 KiB
Python
import os
|
|
import unittest
|
|
import json
|
|
from main import TodoParser
|
|
|
|
|
|
def count_issues_for_file_type(raw_issues, file_type):
|
|
num_issues = 0
|
|
for issue in raw_issues:
|
|
if issue.markdown_language == file_type:
|
|
num_issues += 1
|
|
return num_issues
|
|
|
|
|
|
class NewIssueTests(unittest.TestCase):
|
|
# Check for newly added TODOs across the files specified.
|
|
def setUp(self):
|
|
diff_file = open('tests/test_new.diff', 'r')
|
|
parser = TodoParser()
|
|
with open('syntax.json', 'r') as syntax_json:
|
|
parser.syntax_dict = json.load(syntax_json)
|
|
self.raw_issues = parser.parse(diff_file)
|
|
|
|
def test_python_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'python'), 4)
|
|
|
|
def test_yaml_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'yaml'), 2)
|
|
|
|
def test_php_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'php'), 4)
|
|
|
|
def test_java_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'java'), 2)
|
|
|
|
def test_json5_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'javascript'), 1)
|
|
|
|
def test_ruby_issues(self):
|
|
# Includes 2 tests for Crystal.
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 5)
|
|
|
|
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)
|
|
|
|
def test_tex_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'tex'), 2)
|
|
|
|
def test_julia_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'julia'), 2)
|
|
|
|
def test_autohotkey_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'autohotkey'), 1)
|
|
|
|
def test_handlebars_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'handlebars'), 2)
|
|
|
|
def test_org_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'text'), 2)
|
|
|
|
def test_scss_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'scss'), 2)
|
|
|
|
def test_twig_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'twig'), 2)
|
|
|
|
def test_md_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'markdown'), 6)
|
|
|
|
def test_r_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'r'), 2)
|
|
|
|
def test_haskell_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'haskell'), 2)
|
|
|
|
def test_clojure_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'clojure'), 2)
|
|
|
|
def test_nix_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'nix'), 2)
|
|
|
|
class ClosedIssueTests(unittest.TestCase):
|
|
# Check for removed TODOs across the files specified.
|
|
def setUp(self):
|
|
diff_file = open('tests/test_closed.diff', 'r')
|
|
parser = TodoParser()
|
|
with open('syntax.json', 'r') as syntax_json:
|
|
parser.syntax_dict = json.load(syntax_json)
|
|
self.raw_issues = parser.parse(diff_file)
|
|
|
|
def test_python_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'python'), 4)
|
|
|
|
def test_yaml_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'yaml'), 2)
|
|
|
|
def test_php_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'php'), 4)
|
|
|
|
def test_java_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'java'), 2)
|
|
|
|
def test_ruby_issues(self):
|
|
# Includes 2 tests for Crystal.
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 5)
|
|
|
|
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)
|
|
|
|
def test_tex_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'tex'), 2)
|
|
|
|
def test_julia_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'julia'), 2)
|
|
|
|
def test_json5_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'javascript'), 1)
|
|
|
|
def test_autohotkey_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'autohotkey'), 1)
|
|
|
|
def test_handlebars_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'handlebars'), 2)
|
|
|
|
def test_org_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'text'), 2)
|
|
|
|
def test_scss_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'scss'), 2)
|
|
|
|
def test_twig_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'twig'), 2)
|
|
|
|
def test_md_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'markdown'), 6)
|
|
|
|
def test_r_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'r'), 2)
|
|
|
|
def test_haskell_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'haskell'), 2)
|
|
|
|
def test_clojure_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'clojure'), 2)
|
|
|
|
def test_nix_issues(self):
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'nix'), 2)
|
|
|
|
|
|
class IgnorePatternTests(unittest.TestCase):
|
|
|
|
def test_single_ignore(self):
|
|
os.environ['INPUT_IGNORE'] = '.*\\.java'
|
|
parser = TodoParser()
|
|
with open('syntax.json', 'r') as syntax_json:
|
|
parser.syntax_dict = json.load(syntax_json)
|
|
diff_file = open('tests/test_closed.diff', 'r')
|
|
self.raw_issues = parser.parse(diff_file)
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'python'), 4)
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'yaml'), 2)
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'php'), 4)
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'java'), 0)
|
|
# Includes 2 tests for Crystal.
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 5)
|
|
os.environ['INPUT_IGNORE'] = ''
|
|
|
|
def test_multiple_ignores(self):
|
|
os.environ['INPUT_IGNORE'] = '.*\\.java, tests/example-file\\.php'
|
|
parser = TodoParser()
|
|
with open('syntax.json', 'r') as syntax_json:
|
|
parser.syntax_dict = json.load(syntax_json)
|
|
diff_file = open('tests/test_closed.diff', 'r')
|
|
self.raw_issues = parser.parse(diff_file)
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'python'), 4)
|
|
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)
|
|
# Includes 2 tests for Crystal.
|
|
self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 5)
|
|
os.environ['INPUT_IGNORE'] = ''
|