old_contents: # Test the signal module
  from test.test_support import verbose, TestSkipped, TestFailed
  import signal
  import os, sys, time
  
  if sys.platform[:3] in ('win', 'os2') or sys.platform=='riscos':
      raise TestSkipped, "Can't test signal on %s" % sys.platform
  
  if verbose:
      x = '-x'
  else:
      x = '+x'
  pid = os.getpid()
  
  # Shell script that will send us asynchronous signals
  script = """
   (
          set %(x)s
          sleep 2
          kill -HUP %(pid)d
          sleep 2
          kill -USR1 %(pid)d
          sleep 2
          kill -USR2 %(pid)d
   ) &
  """ % vars()
  
  def handlerA(*args):
      if verbose:
          print "handlerA", args
  
  class HandlerBCalled(Exception):
      pass
  
  def handlerB(*args):
      if verbose:
          print "handlerB", args
      raise HandlerBCalled, args
  
  signal.alarm(20)                        # Entire test lasts at most 20 sec.
  hup = signal.signal(signal.SIGHUP, handlerA)
  usr1 = signal.signal(signal.SIGUSR1, handlerB)
  usr2 = signal.signal(signal.SIGUSR2, signal.SIG_IGN)
  alrm = signal.signal(signal.SIGALRM, signal.default_int_handler)
  
  try:
      os.system(script)
  
      print "starting pause() loop..."
  
      try:
          while 1:
              if verbose:
                  print "call pause()..."
              try:
                  signal.pause()
                  if verbose:
                      print "pause() returned"
              except HandlerBCalled:
                  if verbose:
                      print "HandlerBCalled exception caught"
                  else:
                      pass
  
      except KeyboardInterrupt:
          if verbose:
              print "KeyboardInterrupt (assume the alarm() went off)"
  
  finally:
      signal.signal(signal.SIGHUP, hup)
      signal.signal(signal.SIGUSR1, usr1)
      signal.signal(signal.SIGUSR2, usr2)
      signal.signal(signal.SIGALRM, alrm)
  
new_contents: # Test the signal module
  from test.test_support import verbose, TestSkipped, TestFailed, vereq
  import signal
  import os, sys, time
  
  if sys.platform[:3] in ('win', 'os2') or sys.platform=='riscos':
      raise TestSkipped, "Can't test signal on %s" % sys.platform
  
  if verbose:
      x = '-x'
  else:
      x = '+x'
  pid = os.getpid()
  
  # Shell script that will send us asynchronous signals
  script = """
   (
          set %(x)s
          sleep 2
          kill -HUP %(pid)d
          sleep 2
          kill -USR1 %(pid)d
          sleep 2
          kill -USR2 %(pid)d
   ) &
  """ % vars()
  
  def handlerA(*args):
      if verbose:
          print "handlerA", args
  
  class HandlerBCalled(Exception):
      pass
  
  def handlerB(*args):
      if verbose:
          print "handlerB", args
      raise HandlerBCalled, args
  
  signal.alarm(20)                        # Entire test lasts at most 20 sec.
  hup = signal.signal(signal.SIGHUP, handlerA)
  usr1 = signal.signal(signal.SIGUSR1, handlerB)
  usr2 = signal.signal(signal.SIGUSR2, signal.SIG_IGN)
  alrm = signal.signal(signal.SIGALRM, signal.default_int_handler)
  
  vereq(signal.getsignal(signal.SIGHUP), handlerA)
  vereq(signal.getsignal(signal.SIGUSR1), handlerB)
  vereq(signal.getsignal(signal.SIGUSR2), signal.SIG_IGN)
  
  try:
      signal.signal(4242, handlerB)
      raise TestFailed, 'expected ValueError for invalid signal # to signal()'
  except ValueError:
      pass
  
  try:
      signal.getsignal(4242)
      raise TestFailed, 'expected ValueError for invalid signal # to getsignal()'
  except ValueError:
      pass
  
  try:
      signal.signal(signal.SIGUSR1, None)
      raise TestFailed, 'expected TypeError for non-callable'
  except TypeError:
      pass
  
  try:
      os.system(script)
  
      print "starting pause() loop..."
  
      try:
          while 1:
              if verbose:
                  print "call pause()..."
              try:
                  signal.pause()
                  if verbose:
                      print "pause() returned"
              except HandlerBCalled:
                  if verbose:
                      print "HandlerBCalled exception caught"
                  else:
                      pass
  
      except KeyboardInterrupt:
          if verbose:
              print "KeyboardInterrupt (assume the alarm() went off)"
  
  finally:
      signal.signal(signal.SIGHUP, hup)
      signal.signal(signal.SIGUSR1, usr1)
      signal.signal(signal.SIGUSR2, usr2)
      signal.signal(signal.SIGALRM, alrm)
  
subject: Test getsignal() and some error conditions