diff --git a/gdb-port/tests/unit/ast.py b/gdb-port/tests/unit/ast.py index 7fe8bf442858fad92753e8de7b3024ffde761e47..55e29bd7af2fa60752c29e84772212b8f58f174a 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() +