浏览代码

Add tests for closing pipes

Mike Naberezny 10 年之前
父节点
当前提交
70a2e4d213
共有 1 个文件被更改,包括 42 次插入0 次删除
  1. 42 0
      supervisor/tests/test_options.py

+ 42 - 0
supervisor/tests/test_options.py

@@ -1242,6 +1242,48 @@ class ServerOptionsTests(unittest.TestCase):
         instance.close_logger()
         self.assertEqual(logger.closed, True)
 
+    def test_close_parent_pipes(self):
+        instance = self._makeOne()
+        closed = []
+        def close_fd(fd):
+            closed.append(fd)
+        instance.close_fd = close_fd
+        pipes = {'stdin': 0, 'stdout': 1, 'stderr': 2,
+                 'child_stdin': 3, 'child_stdout': 4, 'child_stderr': 5}
+        instance.close_parent_pipes(pipes)
+        self.assertEqual(sorted(closed), [0, 1, 2])
+
+    def test_close_parent_pipes_ignores_fd_of_none(self):
+        instance = self._makeOne()
+        closed = []
+        def close_fd(fd):
+            closed.append(fd)
+        instance.close_fd = close_fd
+        pipes = {'stdin': None}
+        instance.close_parent_pipes(pipes)
+        self.assertEqual(closed, [])
+
+    def test_close_child_pipes(self):
+        instance = self._makeOne()
+        closed = []
+        def close_fd(fd):
+            closed.append(fd)
+        instance.close_fd = close_fd
+        pipes = {'stdin': 0, 'stdout': 1, 'stderr': 2,
+                 'child_stdin': 3, 'child_stdout': 4, 'child_stderr': 5}
+        instance.close_child_pipes(pipes)
+        self.assertEqual(sorted(closed), [3, 4, 5])
+
+    def test_close_child_pipes_ignores_fd_of_none(self):
+        instance = self._makeOne()
+        closed = []
+        def close_fd(fd):
+            closed.append(fd)
+        instance.close_fd = close_fd
+        pipes = {'child_stdin': None}
+        instance.close_parent_pipes(pipes)
+        self.assertEqual(sorted(closed), [])
+
     def test_reopenlogs(self):
         instance = self._makeOne()
         logger = DummyLogger()