Files
clang-p2996/lldb/test/API/lang/objc/modules/TestObjCModules.py
Jonas Devlieghere 1e566f6b47 [lldb/Test] Add skipIfReproducer for tests that diverge during replay
Add the skipIfReproducer decorator to the remaining tests that fail to
replay because the GDB remote packets diverge during replay. This is
*not* expected and should be fixed, but figuring out exactly what caused
the divergence has proven pretty difficult to track down.

I've marked these tests as skipped for now so we can get clean results
and detect new regressions. I have no evidence to believe that these
failures have the same root cause, so I've not assigned them a PR.
2020-04-21 14:42:14 -07:00

81 lines
2.6 KiB
Python

"""Test that importing modules in Objective-C works as expected."""
import unittest2
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class ObjCModulesTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
def setUp(self):
# Call super's setUp().
TestBase.setUp(self)
# Find the line number to break inside main().
self.line = line_number('main.m', '// Set breakpoint 0 here.')
@skipUnlessDarwin
@skipIf(macos_version=["<", "10.12"])
@skipIfReproducer # Unexpected packet during replay
def test_expr(self):
self.build()
exe = self.getBuildArtifact("a.out")
self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
# Break inside the foo function which takes a bar_ptr argument.
lldbutil.run_break_set_by_file_and_line(
self, "main.m", self.line, num_expected_locations=1, loc_exact=True)
self.runCmd("run", RUN_SUCCEEDED)
# The stop reason of the thread should be breakpoint.
self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
substrs=['stopped',
'stop reason = breakpoint'])
# The breakpoint should have a hit count of 1.
self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE,
substrs=[' resolved, hit count = 1'])
self.expect("expr @import Darwin; 3", VARIABLES_DISPLAYED_CORRECTLY,
substrs=["int", "3"])
self.expect("expr getpid()", VARIABLES_DISPLAYED_CORRECTLY,
substrs=["pid_t"])
self.expect(
"expr @import Foundation; 4",
VARIABLES_DISPLAYED_CORRECTLY,
substrs=[
"int",
"4"])
# Type lookup should still work and print something reasonable
# for types from the module.
self.expect("type lookup NSObject", substrs=["instanceMethod"])
self.expect("expr string.length", VARIABLES_DISPLAYED_CORRECTLY,
substrs=["NSUInteger", "5"])
self.expect("expr array.count", VARIABLES_DISPLAYED_CORRECTLY,
substrs=["NSUInteger", "3"])
self.expect(
"p *[NSURL URLWithString:@\"http://lldb.llvm.org\"]",
VARIABLES_DISPLAYED_CORRECTLY,
substrs=[
"NSURL",
"isa",
"_urlString"])
self.expect(
"p [NSURL URLWithString:@\"http://lldb.llvm.org\"].scheme",
VARIABLES_DISPLAYED_CORRECTLY,
substrs=["http"])