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.
81 lines
2.6 KiB
Python
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"])
|