115 lines · python
1"""2Test that loading of dependents works correctly for all the potential3combinations.4"""5 6 7import lldb8from lldbsuite.test.decorators import *9from lldbsuite.test.lldbtest import *10from lldbsuite.test import lldbutil11 12 13@skipIfWindows # Windows deals differently with shared libs.14class TargetDependentsTestCase(TestBase):15 NO_DEBUG_INFO_TESTCASE = True16 17 def setUp(self):18 TestBase.setUp(self)19 self.build()20 21 def has_exactly_one_image(self, matching, msg=""):22 self.expect(23 "image list",24 "image list should contain at least one image",25 substrs=["[ 0]"],26 )27 should_match = not matching28 self.expect("image list", msg, matching=should_match, substrs=["[ 1]"])29 30 @expectedFailureAll(31 oslist=["freebsd", "linux", "netbsd"],32 bugnumber="llvm.org/pr48372",33 triple=no_match(".*-android"),34 )35 def test_dependents_implicit_default_exe(self):36 """Test default behavior"""37 exe = self.getBuildArtifact("a.out")38 self.runCmd("target create " + exe, CURRENT_EXECUTABLE_SET)39 self.has_exactly_one_image(False)40 41 @expectedFailureAll(42 oslist=["freebsd", "linux", "netbsd"],43 bugnumber="llvm.org/pr48372",44 triple=no_match(".*-android"),45 )46 def test_dependents_explicit_default_exe(self):47 """Test default behavior"""48 exe = self.getBuildArtifact("a.out")49 self.runCmd("target create -ddefault " + exe, CURRENT_EXECUTABLE_SET)50 self.has_exactly_one_image(False)51 52 def test_dependents_explicit_true_exe(self):53 """Test default behavior"""54 exe = self.getBuildArtifact("a.out")55 self.runCmd("target create -dtrue " + exe, CURRENT_EXECUTABLE_SET)56 self.has_exactly_one_image(True)57 58 @expectedFailureAll(59 oslist=["freebsd", "linux", "netbsd"],60 bugnumber="llvm.org/pr48372",61 triple=no_match(".*-android"),62 )63 def test_dependents_explicit_false_exe(self):64 """Test default behavior"""65 exe = self.getBuildArtifact("a.out")66 self.runCmd("target create -dfalse " + exe, CURRENT_EXECUTABLE_SET)67 self.has_exactly_one_image(False)68 69 def test_dependents_implicit_false_exe(self):70 """Test default behavior"""71 exe = self.getBuildArtifact("a.out")72 self.runCmd("target create -d " + exe, CURRENT_EXECUTABLE_SET)73 self.has_exactly_one_image(True)74 75 @expectedFailureAndroid # android will return mutiple images76 def test_dependents_implicit_default_lib(self):77 ctx = self.platformContext78 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension79 lib = self.getBuildArtifact(dylibName)80 self.runCmd("target create " + lib, CURRENT_EXECUTABLE_SET)81 self.has_exactly_one_image(True)82 83 def test_dependents_explicit_default_lib(self):84 ctx = self.platformContext85 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension86 lib = self.getBuildArtifact(dylibName)87 self.runCmd("target create -ddefault " + lib, CURRENT_EXECUTABLE_SET)88 self.has_exactly_one_image(True)89 90 def test_dependents_explicit_true_lib(self):91 ctx = self.platformContext92 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension93 lib = self.getBuildArtifact(dylibName)94 self.runCmd("target create -dtrue " + lib, CURRENT_EXECUTABLE_SET)95 self.has_exactly_one_image(True)96 97 @expectedFailureAll(98 oslist=["freebsd", "linux", "netbsd"],99 bugnumber="llvm.org/pr48372",100 triple=no_match(".*-android"),101 )102 def test_dependents_explicit_false_lib(self):103 ctx = self.platformContext104 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension105 lib = self.getBuildArtifact(dylibName)106 self.runCmd("target create -dfalse " + lib, CURRENT_EXECUTABLE_SET)107 self.has_exactly_one_image(False)108 109 def test_dependents_implicit_false_lib(self):110 ctx = self.platformContext111 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension112 lib = self.getBuildArtifact(dylibName)113 self.runCmd("target create -d " + lib, CURRENT_EXECUTABLE_SET)114 self.has_exactly_one_image(True)115