old_contents: """
  Test process attach/resume.
  """
  
  import os, time
  import unittest2
  import lldb
  from lldbtest import *
  import lldbutil
  
  exe_name = "AttachResume"  # Must match Makefile
  
  class AttachResumeTestCase(TestBase):
  
      mydir = TestBase.compute_mydir(__file__)
  
      @expectedFailureFreeBSD('llvm.org/pr19310')
      @skipIfRemote
      @dwarf_test
      def test_attach_continue_interrupt_detach(self):
          """Test attach/continue/interrupt/detach"""
          self.buildDwarf()
          self.process_attach_continue_interrupt_detach()
  
      @skipIfRemote
      def process_attach_continue_interrupt_detach(self):
          """Test attach/continue/interrupt/detach"""
  
          exe = os.path.join(os.getcwd(), exe_name)
  
          popen = self.spawnSubprocess(exe)
          self.addTearDownHook(self.cleanupSubprocesses)
  
          self.runCmd("process attach -p " + str(popen.pid))
  
          self.setAsync(True)
          listener = self.dbg.GetListener()
  
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning])
  
          self.runCmd("process interrupt")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateStopped])
  
          # be sure to continue/interrupt/continue (r204504)
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning])
  
          self.runCmd("process interrupt")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateStopped])
  
          # check that this breakpoint is auto-cleared on detach (r204752)
          self.runCmd("br set -f main.cpp -l %u" % (line_number('main.cpp', '// Set breakpoint here')))
  
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning, lldb.eStateStopped])
          self.expect('br list', 'Breakpoint not hit',
              substrs = ['hit count = 1'])
  
          # Make sure the breakpoint is not hit again.
          self.expect("expr debugger_flag = false", substrs=[" = false"]);
  
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning])
  
          # make sure to detach while in running state (r204759)
          self.runCmd("detach")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateDetached])
  
  if __name__ == '__main__':
      import atexit
      lldb.SBDebugger.Initialize()
      atexit.register(lambda: lldb.SBDebugger.Terminate())
      unittest2.main()
  
new_contents: """
  Test process attach/resume.
  """
  
  import os, time
  import unittest2
  import lldb
  from lldbtest import *
  import lldbutil
  
  exe_name = "AttachResume"  # Must match Makefile
  
  class AttachResumeTestCase(TestBase):
  
      mydir = TestBase.compute_mydir(__file__)
  
      @expectedFailureFreeBSD('llvm.org/pr19310')
      @expectedFlakeyLinux('llvm.org/pr19310')
      @skipIfRemote
      @dwarf_test
      def test_attach_continue_interrupt_detach(self):
          """Test attach/continue/interrupt/detach"""
          self.buildDwarf()
          self.process_attach_continue_interrupt_detach()
  
      @skipIfRemote
      def process_attach_continue_interrupt_detach(self):
          """Test attach/continue/interrupt/detach"""
  
          exe = os.path.join(os.getcwd(), exe_name)
  
          popen = self.spawnSubprocess(exe)
          self.addTearDownHook(self.cleanupSubprocesses)
  
          self.runCmd("process attach -p " + str(popen.pid))
  
          self.setAsync(True)
          listener = self.dbg.GetListener()
  
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning])
  
          self.runCmd("process interrupt")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateStopped])
  
          # be sure to continue/interrupt/continue (r204504)
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning])
  
          self.runCmd("process interrupt")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateStopped])
  
          # check that this breakpoint is auto-cleared on detach (r204752)
          self.runCmd("br set -f main.cpp -l %u" % (line_number('main.cpp', '// Set breakpoint here')))
  
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning, lldb.eStateStopped])
          self.expect('br list', 'Breakpoint not hit',
              substrs = ['hit count = 1'])
  
          # Make sure the breakpoint is not hit again.
          self.expect("expr debugger_flag = false", substrs=[" = false"]);
  
          self.runCmd("c")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateRunning])
  
          # make sure to detach while in running state (r204759)
          self.runCmd("detach")
          lldbutil.expect_state_changes(self, listener, [lldb.eStateDetached])
  
  if __name__ == '__main__':
      import atexit
      lldb.SBDebugger.Initialize()
      atexit.register(lambda: lldb.SBDebugger.Terminate())
      unittest2.main()
  
subject: Mark TestAttachResume as flaky on linux