Files
clang-p2996/lldb/test/API/lang/cpp/nested-class-other-compilation-unit/TestNestedClassWithParentInAnotherCU.py
Jordan Rupprecht 99451b4453 [lldb][test] Remove symlink for API tests.
Summary: Moves lldbsuite tests to lldb/test/API.

This is a largely mechanical change, moved with the following steps:

```
rm lldb/test/API/testcases
mkdir -p lldb/test/API/{test_runner/test,tools/lldb-{server,vscode}}
mv lldb/packages/Python/lldbsuite/test/test_runner/test lldb/test/API/test_runner
for d in $(find lldb/packages/Python/lldbsuite/test/* -maxdepth 0 -type d | egrep -v "make|plugins|test_runner|tools"); do mv $d lldb/test/API; done
for d in $(find lldb/packages/Python/lldbsuite/test/tools/lldb-vscode -maxdepth 1 -mindepth 1 | grep -v ".py"); do mv $d lldb/test/API/tools/lldb-vscode; done
for d in $(find lldb/packages/Python/lldbsuite/test/tools/lldb-server -maxdepth 1 -mindepth 1 | egrep -v "gdbremote_testcase.py|lldbgdbserverutils.py|socket_packet_pump.py"); do mv $d lldb/test/API/tools/lldb-server; done
```

lldb/packages/Python/lldbsuite/__init__.py and lldb/test/API/lit.cfg.py were also updated with the new directory structure.

Reviewers: labath, JDevlieghere

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D71151
2020-02-11 10:03:53 -08:00

30 lines
1.3 KiB
Python

"""
Test that the expression evaluator can access members of nested classes even if
the parents of the nested classes were imported from another compilation unit.
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestNestedClassWithParentInAnotherCU(TestBase):
mydir = TestBase.compute_mydir(__file__)
def test_nested_class_with_parent_in_another_cu(self):
self.main_source_file = lldb.SBFileSpec("main.cpp")
self.build()
(_, _, thread, _) = lldbutil.run_to_source_breakpoint(self, "// break here", self.main_source_file)
frame = thread.GetSelectedFrame()
# Parse the DIEs of the parent classes and the nested classes from
# other.cpp's CU.
warmup_result = frame.EvaluateExpression("b")
self.assertTrue(warmup_result.IsValid())
# Inspect fields of the nested classes. This will reuse the types that
# were parsed during the evaluation above. By accessing a chain of
# fields, we try to verify that all the DIEs, reused types and
# declaration contexts were wired properly into lldb's parser's state.
expr_result = frame.EvaluateExpression("a.y.oY_inner.oX_inner")
self.assertTrue(expr_result.IsValid())
self.assertEqual(expr_result.GetValue(), "42")