Bladeren bron

Fix signal() error handler
AttributeError: class StringIO has no attribute 'StringIO'

Mike Naberezny 10 jaren geleden
bovenliggende
commit
534f346f97
2 gewijzigde bestanden met toevoegingen van 23 en 3 verwijderingen
  1. 1 1
      supervisor/process.py
  2. 22 2
      supervisor/tests/test_process.py

+ 1 - 1
supervisor/process.py

@@ -459,7 +459,7 @@ class Subprocess(object):
         try:
             options.kill(self.pid, sig)
         except:
-            io = StringIO.StringIO()
+            io = StringIO()
             traceback.print_exc(file=io)
             tb = io.getvalue()
             msg = 'unknown problem sending sig %s (%s):%s' % (

+ 22 - 2
supervisor/tests/test_process.py

@@ -887,12 +887,32 @@ class SubprocessTests(unittest.TestCase):
 
         instance.signal(signal.SIGWINCH )
 
-        self.assertEqual(options.logger.data[0], "attempted to send test sig SIGWINCH " 
+        self.assertEqual(options.logger.data[0], "attempted to send test sig SIGWINCH "
                                                     "but it wasn't running")
 
         self.assertEqual(killedpid, [])
-        
 
+    def test_signal_error(self):
+        options = DummyOptions()
+        config = DummyPConfig(options, 'test', '/test')
+        options.kill_error = 1
+        instance = self._makeOne(config)
+        L = []
+        from supervisor.states import ProcessStates
+        from supervisor import events
+        events.subscribe(events.ProcessStateEvent,
+                         lambda x: L.append(x))
+        instance.pid = 11
+        instance.state = ProcessStates.RUNNING
+        instance.signal(signal.SIGWINCH)
+        self.assertEqual(options.logger.data[0],
+            'sending test (pid 11) sig SIGWINCH')
+        self.assertTrue(options.logger.data[1].startswith(
+            'unknown problem sending sig test (11)'))
+        self.assertEqual(instance.killing, 0)
+        self.assertEqual(len(L), 1)
+        event = L[0]
+        self.assertEqual(event.__class__, events.ProcessStateUnknownEvent)
 
     def test_finish(self):
         options = DummyOptions()