text: """Test that a dSYM can be found when a binary is in a deep bundle with multiple pathname components."""
  
  from __future__ import print_function
  
  #import unittest2
  import os.path
  from time import sleep
  
  import lldb
  from lldbsuite.test.decorators import *
  from lldbsuite.test.lldbtest import *
  from lldbsuite.test import lldbutil
  
  
  exe_name = 'deep-bundle'  # must match Makefile
  
  class DeepBundleTestCase(TestBase):
  
      mydir = TestBase.compute_mydir(__file__)
  
      @skipIfRemote
      @skipUnlessDarwin
      # This test is explicitly a dSYM test, it doesn't need to run for any other config, but
      # the following doesn't work, fixme.
      # @skipIf(debug_info=no_match(["dsym"]), bugnumber="This test is looking explicitly for a dSYM")
  
      def setUp(self):
          TestBase.setUp(self)
          self.source = 'main.c'
  
      def tearDown(self):
          # Destroy process before TestBase.tearDown()
          self.dbg.GetSelectedTarget().GetProcess().Destroy()
  
          # Call super's tearDown().
          TestBase.tearDown(self)
  
      def test_attach_and_check_dsyms(self):
          """Test attach to binary, see if the framework dSYM is found"""
          exe = self.getBuildArtifact(exe_name)
          self.build()
          popen = self.spawnSubprocess(exe, [self.getBuildDir()])
          self.addTearDownHook(self.cleanupSubprocesses)
  
          # Give the inferior time to start up, dlopen a bundle, remove the bundle it linked in
          sleep(5)
  
          # Since the library that was dlopen()'ed is now removed, lldb will need to find the
          # binary & dSYM via target.exec-search-paths
          settings_str = "settings set target.exec-search-paths " + self.get_process_working_directory() + "/hide.app"
          self.runCmd(settings_str)
          self.runCmd("process attach -p " + str(popen.pid))
  
          target = self.dbg.GetSelectedTarget()
          self.assertTrue(target.IsValid(), 'Should have a valid Target after attaching to process')
  
          setup_complete = target.FindFirstGlobalVariable("setup_is_complete")
          self.assertTrue(setup_complete.GetValueAsUnsigned() == 1, 'Check that inferior process has completed setup')
  
          # Find the bundle module, see if we found the dSYM too (they're both in "hide.app")
          i = 0
          found_module = False
          while i < target.GetNumModules():
              mod = target.GetModuleAtIndex(i)
              if mod.GetFileSpec().GetFilename() == 'MyFramework':
                  found_module = True
                  dsym_name = mod.GetSymbolFileSpec().GetFilename()
                  self.assertTrue (dsym_name == 'MyFramework', "Check that we found the dSYM for the bundle that was loaded")
              i=i+1
  
          self.assertTrue(found_module, "Check that we found the framework loaded in lldb's image list")
  
  if __name__ == '__main__':
      unittest.main()
  