From bfe6fc640ab1bd1a09643ec6bc0ad996b4f3e463 Mon Sep 17 00:00:00 2001 From: pompolic <pompolic@special-circumstanc.es> Date: Mon, 11 Jul 2022 22:55:49 +0200 Subject: [PATCH] Test for calling read_member() with nonexistent member name --- gdb-port/tests/unit/ast.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/gdb-port/tests/unit/ast.py b/gdb-port/tests/unit/ast.py index 7fe8bf4..55e29bd 100644 --- a/gdb-port/tests/unit/ast.py +++ b/gdb-port/tests/unit/ast.py @@ -99,4 +99,24 @@ class HParseResultCreation(unittest.TestCase): # TODO: should read_member employ a whitelist for member_name, or should this trigger an exeption? def test_read_member_invalid_param(self): - raise Exception("Not implemented") + hpr_pointer_type_patcher = unittest.mock.patch.object(HParseResult, 'HParseResult_t_p', spec=gdb.Type) + gdbv_patcher = unittest.mock.patch('gdb.Value', autospec=True) + gdb_lookup_type_patcher = unittest.mock.patch.object(gdb, 'lookup_type') + init_patcher = unittest.mock.patch.object(HParseResult, '__init__', return_value=None) + + hpr_pointer_type_patcher.start() + gdbv_mock_object = gdbv_patcher.start() + gdb_lookup_type_mock_object = gdb_lookup_type_patcher.start() + init_patcher.start() + + with self.assertRaises(gdb.error): + result = HParseResult(0xdeadbeef) + result.address = 0xdeadbeef + member = result.read_member('invalid_member_value') + + #TODO: ensure these run even if the test fails + init_patcher.stop() + gdb_lookup_type_patcher.stop() + gdbv_patcher.stop() + hpr_pointer_type_patcher.stop() + -- GitLab