diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py')
-rw-r--r-- | packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py b/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py index d075eb65b848..ce270b1ea391 100644 --- a/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py +++ b/packages/Python/lldbsuite/test/lang/cpp/scope/TestCppScope.py @@ -6,13 +6,25 @@ from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil + class TestCppScopes(TestBase): mydir = TestBase.compute_mydir(__file__) - @expectedFailureDarwin @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764") - def test_with_run_command(self): + def test_all_but_c(self): + self.do_test(False) + + # There's a global symbol in libsystem on Darwin that messes up + # the lookup of class C. Breaking that test out from the others + # since that is a odd failure, and I don't want it to mask the + # real purpose of this test. + @expectedFailureDarwin(bugnumber="<rdar://problem/28623427>") + @expectedFailureAll(oslist=["windows"]) + def test_c(self): + self.do_test(True) + + def do_test(self, test_c): self.build() # Get main source file @@ -23,25 +35,32 @@ class TestCppScopes(TestBase): # Get the path of the executable cwd = os.getcwd() exe_file = "a.out" - exe_path = os.path.join(cwd, exe_file) + exe_path = os.path.join(cwd, exe_file) # Load the executable target = self.dbg.CreateTarget(exe_path) self.assertTrue(target.IsValid(), VALID_TARGET) # Break on main function - main_breakpoint = target.BreakpointCreateBySourceRegex("// break here", src_file_spec) - self.assertTrue(main_breakpoint.IsValid() and main_breakpoint.GetNumLocations() >= 1, VALID_BREAKPOINT) + main_breakpoint = target.BreakpointCreateBySourceRegex( + "// break here", src_file_spec) + self.assertTrue( + main_breakpoint.IsValid() and main_breakpoint.GetNumLocations() >= 1, + VALID_BREAKPOINT) # Launch the process args = None env = None - process = target.LaunchSimple(args, env, self.get_process_working_directory()) + process = target.LaunchSimple( + args, env, self.get_process_working_directory()) self.assertTrue(process.IsValid(), PROCESS_IS_VALID) # Get the thread of the process - self.assertTrue(process.GetState() == lldb.eStateStopped, PROCESS_STOPPED) - thread = lldbutil.get_stopped_thread(process, lldb.eStopReasonBreakpoint) + self.assertTrue( + process.GetState() == lldb.eStateStopped, + PROCESS_STOPPED) + thread = lldbutil.get_stopped_thread( + process, lldb.eStopReasonBreakpoint) # Get current fream of the thread at the breakpoint frame = thread.GetSelectedFrame() @@ -57,12 +76,23 @@ class TestCppScopes(TestBase): 'a': 4444 } - self.assertTrue(global_variables.GetSize() == 4, "target variable returns all variables") + self.assertTrue( + global_variables.GetSize() == 4, + "target variable returns all variables") for variable in global_variables: name = variable.GetName() - self.assertTrue(name in global_variables_assert, "target variable returns wrong variable " + name) + self.assertTrue( + name in global_variables_assert, + "target variable returns wrong variable " + name) for name in global_variables_assert: + if name is "C::a" and not test_c: + continue + if name is not "C::a" and test_c: + continue + value = frame.EvaluateExpression(name) assert_value = global_variables_assert[name] - self.assertTrue(value.IsValid() and value.GetValueAsSigned() == assert_value, name + " = " + str(assert_value)) + self.assertTrue( + value.IsValid() and value.GetValueAsSigned() == assert_value, + name + " = " + str(assert_value)) |