From 325fbaf03b093bc9c6a12ce57a10d10251c07c33 Mon Sep 17 00:00:00 2001 From: Robert Alonso <17463757+rgalonso@users.noreply.github.com> Date: Sat, 9 Nov 2024 19:00:32 +0000 Subject: [PATCH] test: add additional test demonstrating current bug Added a test which demonstrates a current bug where if multiple TODOs with the same title appear in the diff of the same file, only one of those issues will have its URL succesfully inserted. (Specifically, the first from the top.) As such, the test is configured as an expected failure until such time as the bug can be fixed. --- tests/test_process_diff.py | 32 ++++++++++++++++++------- tests/test_same_title_in_same_file.diff | 27 +++++++++++++++++++++ 2 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 tests/test_same_title_in_same_file.diff diff --git a/tests/test_process_diff.py b/tests/test_process_diff.py index 3091026..9dbd7a4 100644 --- a/tests/test_process_diff.py +++ b/tests/test_process_diff.py @@ -9,7 +9,7 @@ from TodoParser import TodoParser from main import process_diff -class IssueUrlInsertionTestBase(unittest.TestCase): +class ProcessDiffTestBase(unittest.TestCase): orig_cwd = None tempdir = None diff_file = None @@ -37,6 +37,16 @@ class IssueUrlInsertionTestBase(unittest.TestCase): # change to the simulated filesystem directory os.chdir(self.tempdir.name) + def _standardTest(self, expected_count): + # create object to hold output + output = io.StringIO() + # process the diffs + process_diff(diff=self.diff_file, insert_issue_urls=True, parser=self.parser, output=output) + # make sure the number of issue URL comments inserted is as expected + self.assertEqual(output.getvalue().count('Issue URL successfully inserted'), + expected_count, + msg='\nProcessing log\n--------------\n'+output.getvalue()) + def _tearDown(self): # return to original working directory to ensure we don't mess up other tests os.chdir(self.orig_cwd) @@ -46,7 +56,7 @@ class IssueUrlInsertionTestBase(unittest.TestCase): self.tempdir = None -class IssueUrlInsertionTest(IssueUrlInsertionTestBase): +class IssueUrlInsertionTest(ProcessDiffTestBase): def setUp(self): return super()._setUp('test_new.diff') @@ -56,12 +66,18 @@ class IssueUrlInsertionTest(IssueUrlInsertionTestBase): @unittest.skipIf(os.getenv('SKIP_PROCESS_DIFF_TEST', 'false') == 'true', "Skipping because 'SKIP_PROCESS_DIFF_TEST' is 'true'") def test_url_insertion(self): - # create object to hold output - output = io.StringIO() - # process the diffs - process_diff(diff=self.diff_file, insert_issue_urls=True, parser=self.parser, output=output) - # make sure the number of issue URL comments inserted is as expected - self.assertEqual(output.getvalue().count('Issue URL successfully inserted'), 80) + self._standardTest(80) + + def tearDown(self): + return super()._tearDown() + +class IdenticalTodoTest(ProcessDiffTestBase): + def setUp(self): + return super()._setUp('test_same_title_in_same_file.diff') + + @unittest.expectedFailure + def test_same_title_in_same_file(self): + self._standardTest(5) def tearDown(self): return super()._tearDown() diff --git a/tests/test_same_title_in_same_file.diff b/tests/test_same_title_in_same_file.diff new file mode 100644 index 0000000..60f37bf --- /dev/null +++ b/tests/test_same_title_in_same_file.diff @@ -0,0 +1,27 @@ +diff --git a/Counter.sol b/Counter.sol +new file mode 100644 +index 0000000..d340f6a +--- /dev/null ++++ b/Counter.sol +@@ -0,0 +1,21 @@ ++contract Counter { ++ // TODO: Test this ++ // Do it ++ // labels: urgent ++ ++ /// TODO: Natspec comment ++ /// Do it ++ /// labels: urgent ++ ++ /* ++ TODO: Test this too ++ Do it ASAP ++ labels: urgent ++ */ ++ ++ // TODO: Test this ++ /** ++ * TODO: Test this too ++ * labels: urgent ++ */ ++}