From 952f3d6c853120276aade5b55f9fc50139c7b109 Mon Sep 17 00:00:00 2001 From: Christoph Koschel Date: Sat, 30 Sep 2023 19:39:59 +0200 Subject: [PATCH] Added unit tests --- tests/test_todo_parser.py | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/test_todo_parser.py b/tests/test_todo_parser.py index 1f8a008..83a02c2 100644 --- a/tests/test_todo_parser.py +++ b/tests/test_todo_parser.py @@ -93,6 +93,7 @@ class NewIssueTests(unittest.TestCase): def test_xaml_issues(self): self.assertEqual(count_issues_for_file_type(self.raw_issues, 'xml'), 2) + class ClosedIssueTests(unittest.TestCase): # Check for removed TODOs across the files specified. def setUp(self): @@ -173,6 +174,7 @@ class ClosedIssueTests(unittest.TestCase): def test_xaml_issues(self): self.assertEqual(count_issues_for_file_type(self.raw_issues, 'xml'), 2) + class IgnorePatternTests(unittest.TestCase): def test_single_ignore(self): @@ -205,6 +207,7 @@ class IgnorePatternTests(unittest.TestCase): self.assertEqual(count_issues_for_file_type(self.raw_issues, 'ruby'), 5) os.environ['INPUT_IGNORE'] = '' + class EscapeMarkdownTest(unittest.TestCase): def test_simple_escape(self): os.environ['INPUT_ESCAPE'] = 'true' @@ -227,3 +230,47 @@ class EscapeMarkdownTest(unittest.TestCase): self.assertEqual(issue.body[0], '\\# Another title') self.assertEqual(issue.body[1], '\\') + +class CostumeLanguageTest(unittest.TestCase): + def test_costume_lang_load(self): + os.environ['INPUT_LANGUAGES'] = 'tests/costume_languages.json' + parser = TodoParser() + # Test if the costume language ILS is actually loaded into the system + self.assertIsNotNone(parser.languages_dict['ILS']) + self.assertEqual(self.count_syntax(parser, 'ILS'), 1) + + def test_costume_lang_not_dupplicate(self): + os.environ['INPUT_LANGUAGES'] = 'tests/costume_languages.json' + parser = TodoParser() + + # Test if a costume language can overwrite the rules of an existing one + self.assertEqual(self.count_syntax(parser, 'Java'), 1) + for syntax in parser.syntax_dict: + if syntax['language'] == 'Java': + self.assertEqual(len(syntax['markers']), 2) + self.assertEqual(syntax['markers'][0]['pattern'], "////") + self.assertEqual(syntax['markers'][1]['pattern']['start'], '+=') + self.assertEqual(syntax['markers'][1]['pattern']['end'], '=+') + break + + self.assertIsNotNone(parser.languages_dict['Java']) + self.assertEqual(len(parser.languages_dict['Java']['extensions']), 1) + self.assertEqual(parser.languages_dict['Java']['extensions'][0], ".java2") + + def test_url_load(self): + os.environ['INPUT_LANGUAGES'] = 'https://raw.githubusercontent.com/Christoph-Koschel/todo-to-issue-action/patch-3/tests/costume_languages.json' + os.environ['INPUT_NO_STANDARD'] = 'true' + parser = TodoParser() + + self.assertEqual(len(parser.languages_dict), 2) + self.assertEqual(len(parser.syntax_dict), 2) + + @staticmethod + def count_syntax(parser: TodoParser, name: str): + counter = 0 + + for syntax in parser.syntax_dict: + if syntax['language'] == name: + counter = counter + 1 + + return counter