From 0ccfbdaa7dadacd8da1ea9d794100357d547a47a Mon Sep 17 00:00:00 2001 From: pompolic <pompolic@special-circumstanc.es> Date: Wed, 20 Apr 2022 20:32:48 +0200 Subject: [PATCH] Improve set_parser_virtual_breakpoints() tests --- gdb-port/tests/unit/breakpoint-manager.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/gdb-port/tests/unit/breakpoint-manager.py b/gdb-port/tests/unit/breakpoint-manager.py index 2bce7c2..e5ff950 100644 --- a/gdb-port/tests/unit/breakpoint-manager.py +++ b/gdb-port/tests/unit/breakpoint-manager.py @@ -86,16 +86,31 @@ class BreakpointManagerSettingBreakpoints(unittest.TestCase): def test_set_parser_virtual_breakpoints(self): self.bpm.set_parser_virtual_breakpoints() + method_names = [ a for a in dir(self.bpm) if a.startswith("parse_")] virt_bps = [ self.bpm.__getattribute__(a) for a in dir(self.bpm) if a.startswith("parse_")] - for bp in virt_bps: - self.assertTrue(self.pvbp_mock_object.call_count == len(virt_bps)) + self.assertTrue(self.pvbp_mock_object.call_count == len(virt_bps)) + #print(self.pvbp_mock_object.mock_calls) + for i in range(0, len(method_names)): + with self.subTest(i=i): + self.pvbp_mock_object.assert_any_call(method_names[i]) def test_del_parser_virtual_breakpoints(self): self.bpm.set_parser_virtual_breakpoints() virt_bps = [ self.bpm.__getattribute__(a) for a in dir(self.bpm) if a.startswith("parse_")] self.bpm.del_parser_virtual_breakpoints() - for bp in virt_bps: - self.assertTrue(bp.delete.called) + #TODO: in tests, all self.parse_* attributes refer to the same mock object + # so we can't just do virt_bps[i].delete.assert_called_once(), because it + # will have been called len(virt_bps) times. + # it would be desirable to have separate mock object instances, + # or for mock_object to know which attribute it has + # been called through, to allow checking individual self.parse_* + # breakpoints for deletion + self.assertTrue(len(virt_bps) > 0) + self.assertTrue(virt_bps[0].mock_calls == [unittest.mock.call.delete()] * len(virt_bps)) + #self.assertTrue(virt_bps[0].delete.call_count == len(virt_bps)) + #for i in range(0, len(virt_bps)): + # with self.subTest(i=i): + # virt_bps[i].delete.assert_called_once() # TODO #def tearDown(self): -- GitLab