new_contents: 
  """
  Helper script for writing tests.
  
  How it works:
  
   - Each event that occurs generates a Python function that expects exactly
     that event.
   - Each time an event occurs, you're dropped into a Python debugger. The
     commands you type will be inserted into the function that expects that
     event.
   - Executing "!return False" in the debugger will stop the script, as will
     SIGINT (Control-C).
  
  Once your'e done, the test code is written to a file called test.dump.
  """
  
  import pdb
  import pprint
  
  from twisted.internet import glib2reactor
  glib2reactor.install()
  
  from gabbletest import EventTest, run
  
  class LoggingPdb(pdb.Pdb):
      def __init__(self):
          pdb.Pdb.__init__(self)
          self.log = []
  
      def default(self, line):
          self.log.append(line)
          return pdb.Pdb.default(self, line)
  
  def expect(event, data):
      return True
  
  class TestShell:
      def __init__(self):
          self.events = []
  
      def expect(self, event, data):
          print 'event:'
          for item in event:
              print '-', pprint.pformat(item)
          db = LoggingPdb()
          ret = db.runcall(expect, event, data)
          print (ret, db.log)
          self.events.append((event, db.log, ret))
          return False
  
      def make_expect_func(self, suffix, event, log, ret):
          lines = []
          lines.append('def expect_%s(event, data):\n' % suffix)
          lines.extend([
              '    if event[%d] != %r:\n        return False\n\n' % (i, item)
              for i, item in enumerate(event)])
          lines.extend(['    %s\n' % line for line in log])
          lines.append('    return %r\n' % ret)
          return ''.join(lines)
  
      def make_script(self):
          return '\n'.join([
              self.make_expect_func(i, event, log, ret)
              for i, (event, log, ret) in enumerate(self.events)])
  
  class NoTimeoutEventTest(EventTest):
      def timeout_cb(self):
          pass
  
  if __name__ == '__main__':
      test = NoTimeoutEventTest()
      shell = TestShell()
      test.expect(shell.expect)
  
      try:
          run(test)
      except KeyboardInterrupt:
          pass
  
      print 'writing test to test.dump'
      fh = file('test.dump', 'w')
      fh.write(shell.make_script())
  
  
subject: add helper script for writing Twisted tests