summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
index 011cf499291..c07acf9c540 100644
--- a/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
@@ -155,7 +155,9 @@ class TestMembersAndLocalsWithSameName(TestBase):
frame = thread.GetSelectedFrame()
self.assertTrue(frame.IsValid())
+ self.enable_expression_log()
val = frame.EvaluateExpression("a")
+ self.disable_expression_log_and_check_for_locals(['a'])
self.assertTrue(val.IsValid())
self.assertEqual(val.GetValueAsUnsigned(), 12345)
@@ -189,6 +191,12 @@ class TestMembersAndLocalsWithSameName(TestBase):
self.assertTrue(val.IsValid())
self.assertEqual(val.GetValueAsUnsigned(), 10003)
+ self.enable_expression_log()
+ val = frame.EvaluateExpression("c-b")
+ self.disable_expression_log_and_check_for_locals(['c','b'])
+ self.assertTrue(val.IsValid())
+ self.assertEqual(val.GetValueAsUnsigned(), 1)
+
self.process.Continue()
self.assertTrue(
self.process.GetState() == lldb.eStateStopped,
@@ -211,6 +219,13 @@ class TestMembersAndLocalsWithSameName(TestBase):
self.assertTrue(val.IsValid())
self.assertEqual(val.GetValueAsUnsigned(), 778899)
+ self.enable_expression_log()
+ val = frame.EvaluateExpression("a+b")
+ self.disable_expression_log_and_check_for_locals(['a','b'])
+ self.assertTrue(val.IsValid())
+ self.assertEqual(val.GetValueAsUnsigned(), 3)
+
+
def _load_exe(self):
self.build()
@@ -234,7 +249,9 @@ class TestMembersAndLocalsWithSameName(TestBase):
frame = thread.GetSelectedFrame()
self.assertTrue(frame.IsValid())
+ self.enable_expression_log()
val = frame.EvaluateExpression("a")
+ self.disable_expression_log_and_check_for_locals([])
self.assertTrue(val.IsValid())
self.assertEqual(val.GetValueAsUnsigned(), 112233)
@@ -245,3 +262,23 @@ class TestMembersAndLocalsWithSameName(TestBase):
val = frame.EvaluateExpression("c")
self.assertTrue(val.IsValid())
self.assertEqual(val.GetValueAsUnsigned(), 778899)
+
+ def enable_expression_log(self):
+ log_file = os.path.join(self.getBuildDir(), "expr.log")
+ self.runCmd("log enable -f '%s' lldb expr" % (log_file))
+
+ def disable_expression_log_and_check_for_locals(self, variables):
+ log_file = os.path.join(self.getBuildDir(), "expr.log")
+ self.runCmd("log disable lldb expr")
+ local_var_regex = re.compile(r".*__lldb_local_vars::(.*);")
+ matched = []
+ with open(log_file, 'r') as log:
+ for line in log:
+ if line.find('LLDB_BODY_START') != -1:
+ break
+ m = re.match(local_var_regex, line)
+ if m:
+ self.assertIn(m.group(1), variables)
+ matched.append(m.group(1))
+ self.assertEqual([item for item in variables if item not in matched],
+ [])
OpenPOWER on IntegriCloud