From 7032c76bc5853df6d8d360a2afc7dfa6356f2b69 Mon Sep 17 00:00:00 2001 From: Marcos Soutullo Rodriguez Date: Sun, 16 Oct 2022 12:00:41 +0100 Subject: [PATCH] feat: add support for JSON5 --- README.md | 5 +++-- syntax.json | 2 +- tests/test_closed.diff | 25 ++++++++++++++++--------- tests/test_new.diff | 30 +++++++++++++++--------------- tests/test_todo_parser.py | 15 +++++++++------ 5 files changed, 44 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index f0afeb6..2fbb9b4 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ There are additional inputs if you want to be able to assign issues to projects. * HTML * Java * JavaScript +* JSON5 * Julia * Kotlin * Less @@ -109,7 +110,7 @@ There are additional inputs if you want to be able to assign issues to projects. * Vue * YAML -New languages can easily be added to the `syntax.json` file used by the action to identify TODO comments. When adding languages, follow the structure of existing entries, and use the language name defined by GitHub in [`languages.yml`](https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml). PRs adding new languages are welcome and appreciated. Please add a test for your language in order for your PR to be accepted. +New languages can easily be added to the `syntax.json` file used by the action to identify TODO comments. When adding languages, follow the structure of existing entries, and use the language name defined by GitHub in [`languages.yml`](https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml). PRs adding new languages are welcome and appreciated. Please add a test for your language in order for your PR to be accepted. ## TODO Options @@ -182,7 +183,7 @@ Issues are created whenever the action runs and finds a newly added TODO in the If you do encounter any problems, please file an issue or submit a PR. Everyone is welcome and encouraged to contribute. -## Running tests locally +## Running tests locally To run the tests locally, simply run the following in the main repo: ```shell diff --git a/syntax.json b/syntax.json index e8dad92..d66f381 100644 --- a/syntax.json +++ b/syntax.json @@ -650,4 +650,4 @@ } ] } -] +] \ No newline at end of file diff --git a/tests/test_closed.diff b/tests/test_closed.diff index 1e5a427..897afd3 100644 --- a/tests/test_closed.diff +++ b/tests/test_closed.diff @@ -63,7 +63,7 @@ index 525e25d..ba4e68d 100644 -def my_method(arg): - """ - TODO: Second multiline comment -- also need to be turned into task, and hopefully +- also need to be turned into task, and hopefully - kept together as one. - """ - pass @@ -71,7 +71,7 @@ index 525e25d..ba4e68d 100644 -def MyClass: - ''' - TODO: Third multiline comment -- also need to be turned into task, and hopefully +- also need to be turned into task, and hopefully - kept together as one. - ''' - pass @@ -156,7 +156,7 @@ index 0000000..7cccc5b - # TODO: Hopefully this comment turns into an issue - print("Hello World") - #= TODO: Multiline comments -- also need to be turned into task, and hopefully +- also need to be turned into task, and hopefully - kept together as one. - =# diff --git a/tests/example_file.ahk b/src/tests/example_file.ahk @@ -168,7 +168,7 @@ index 0000000..7cccc5b - ; TODO: Find a better way to manage hotkeys - ; Maybe just switch to vim?? - #h:: -- RegRead, HiddenFiles_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden +- RegRead, HiddenFiles_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden diff --git a/tests/example_file.hbs b/src/tests/example_file.hbs new file mode 100644 index 0000000..7cccc5b @@ -176,7 +176,7 @@ index 0000000..7cccc5b +++ b/src/tests/example_file.hbs @@ -0,0 +1,2 @@ - -- {{! +- {{! - TODO: Make a handlebar templtate - This is really just a test, but hopefully this works~! - }} @@ -192,7 +192,7 @@ index 0000000..7cccc5b - #+end_src - #+begin_comment - TODO: Multiline comments -- also need to be turned into todos, and hopefully +- also need to be turned into todos, and hopefully - kept together as one todo - #+end_comment diff --git a/tests/example_file.scss b/tests/example_file.scss @@ -205,9 +205,9 @@ index 525e25d..ba4e68d 100644 - font-weight: bold; - .my-second-class { - /* TODO: Multiline comments -- * also need to be turned into todos, and hopefully +- * also need to be turned into todos, and hopefully - * kept together as one todo -- */ +- */ - text-align: center; - } -} @@ -277,4 +277,11 @@ index 525e25d..ba4e68d 100644 - -TODO: Create an issue for TODO --} --sum a b = a + b \ No newline at end of file +-sum a b = a + b + +diff --git a/tests/config.json5 b/tests/config.json5 +index 0000000..525e25d 100644 +--- a/tests/config.json5 ++++ b/tests/config.json5 +@@ -0,0 +0,1 @@ +- // TODO: Delete this line from the codebase diff --git a/tests/test_new.diff b/tests/test_new.diff index f8de332..f862604 100644 --- a/tests/test_new.diff +++ b/tests/test_new.diff @@ -85,7 +85,7 @@ index 0000000..0ce9b1a +++ b/src/Swarm/Game/example.hs @@ -0,0 +1,14 @@ +-- | Standard devices that are always installed. -+-- ++-- +-- TODO: Remove standard devices +-- In the future, make a way to build these and just start the base +-- out with a large supply of each? @@ -184,7 +184,7 @@ index 0000000..7cccc5b + # TODO: Hopefully this comment turns into an issue + print("Hello World") + #= TODO: Multiline comments -+ also need to be turned into task, and hopefully ++ also need to be turned into task, and hopefully + kept together as one. + =# diff --git a/tests/example_file.ahk b/src/tests/example_file.ahk @@ -196,7 +196,7 @@ index 0000000..7cccc5b + ; TODO: Find a better way to manage hotkeys + ; Maybe just switch to vim?? + #h:: -+ RegRead, HiddenFiles_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden ++ RegRead, HiddenFiles_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden diff --git a/tests/example_file.hbs b/src/tests/example_file.hbs new file mode 100644 index 0000000..7cccc5b @@ -204,7 +204,7 @@ index 0000000..7cccc5b +++ b/src/tests/example_file.hbs @@ -0,0 +1,2 @@ + -+ {{! ++ {{! + TODO: Make a handlebar templtate + This is really just a test, but hopefully this works~! + }} @@ -220,7 +220,7 @@ index 0000000..7cccc5b + #+end_src + #+begin_comment + TODO: Multiline comments -+ also need to be turned into todos, and hopefully ++ also need to be turned into todos, and hopefully + kept together as one todo + #+end_comment diff --git a/tests/example_file.scss b/src/tests/example_file.scss @@ -234,9 +234,9 @@ index 0000000..7cccc5b + font-weight: bold; + .my-second-class { + /* TODO: Multiline comments -+ * also need to be turned into todos, and hopefully ++ * also need to be turned into todos, and hopefully + * kept together as one todo -+ */ ++ */ + text-align: center; + } +} @@ -259,7 +259,7 @@ index 0000000..7cccc5b +++ b/src/tests/example_file.md @@ -0,0 +1,7 @@ + {/* TODO: Hopefully this comment turns into a todo issue */} -+ {/* ++ {/* + TODO:Multiline comments + also need to be turned into todos, and hopefully + kept together as one todo @@ -272,7 +272,7 @@ index 0000000..7cccc5b +++ b/src/tests/example_file.mdx @@ -0,0 +1,7 @@ + {/* TODO: Hopefully this comment turns into a todo issue */} -+ {/* ++ {/* + TODO:Multiline comments + also need to be turned into todos, and hopefully + kept together as one todo @@ -292,17 +292,17 @@ index 0000000..525e25d + # This function should probably do something more interesting + # labels: help wanted +} -diff --git a/tests/example_file.r b/tests/config.json5 +diff --git a/tests/config.json5 b/tests/config.json5 new file mode 100644 -index 0000000..525f56e +index 0000000..525e25d --- /dev/null -+++ b/tests/example_file.json5 -@@ -0,0 +1,7 @@ ++++ b/tests/config.json5 +@@ -0,0 +0,8 @@ +{ + "myConfig": [ + // GitRepository where 'Git release/tag' matches 'Helm' version + "itIsWonderful", -+ // TODO: Delete this line from the codebase ++ // TODO: Delete this line from the codebase + "butItHasSomePendingActivities" + ] -+} \ No newline at end of file ++} diff --git a/tests/test_todo_parser.py b/tests/test_todo_parser.py index 023c3de..ec16877 100644 --- a/tests/test_todo_parser.py +++ b/tests/test_todo_parser.py @@ -17,7 +17,7 @@ class NewIssueTests(unittest.TestCase): def setUp(self): diff_file = open('tests/test_new.diff', 'r') parser = TodoParser() - with open('syntax.json', 'r') as syntax_json: + with open('syntax.json', 'r') as syntax_json: parser.syntax_dict = json.load(syntax_json) self.raw_issues = parser.parse(diff_file) @@ -34,7 +34,7 @@ class NewIssueTests(unittest.TestCase): 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, 'json5'), 1) + self.assertEqual(count_issues_for_file_type(self.raw_issues, 'javascript'), 1) def test_ruby_issues(self): # Includes 2 tests for Crystal. @@ -69,7 +69,7 @@ class NewIssueTests(unittest.TestCase): 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) @@ -82,7 +82,7 @@ class ClosedIssueTests(unittest.TestCase): def setUp(self): diff_file = open('tests/test_closed.diff', 'r') parser = TodoParser() - with open('syntax.json', 'r') as syntax_json: + with open('syntax.json', 'r') as syntax_json: parser.syntax_dict = json.load(syntax_json) self.raw_issues = parser.parse(diff_file) @@ -114,6 +114,9 @@ class ClosedIssueTests(unittest.TestCase): 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) @@ -144,7 +147,7 @@ class IgnorePatternTests(unittest.TestCase): def test_single_ignore(self): os.environ['INPUT_IGNORE'] = '.*\\.java' parser = TodoParser() - with open('syntax.json', 'r') as syntax_json: + 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) @@ -159,7 +162,7 @@ class IgnorePatternTests(unittest.TestCase): def test_multiple_ignores(self): os.environ['INPUT_IGNORE'] = '.*\\.java, tests/example-file\\.php' parser = TodoParser() - with open('syntax.json', 'r') as syntax_json: + 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)