| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import contextlib | 5 import contextlib |
| 6 import collections | 6 import collections |
| 7 import errno | 7 import errno |
| 8 import os | 8 import os |
| 9 import sys | 9 import sys |
| 10 import unittest | 10 import unittest |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 | 172 |
| 173 def testClosesFdWithExceptions(self, _mock_exit, _mock_chdir, _mock_dup2, | 173 def testClosesFdWithExceptions(self, _mock_exit, _mock_chdir, _mock_dup2, |
| 174 _mock_open, mock_close, _mock_setsid, | 174 _mock_open, mock_close, _mock_setsid, |
| 175 _mock_fork): | 175 _mock_fork): |
| 176 daemon.become_daemon(keep_fds={42}) | 176 daemon.become_daemon(keep_fds={42}) |
| 177 | 177 |
| 178 self.assertEqual(2047, mock_close.call_count) | 178 self.assertEqual(2047, mock_close.call_count) |
| 179 self.assertEqual([((i,),) for i in reversed(range(2048)) if i != 42], | 179 self.assertEqual([((i,),) for i in reversed(range(2048)) if i != 42], |
| 180 mock_close.call_args_list) | 180 mock_close.call_args_list) |
| 181 | 181 |
| 182 def testClosesFdsKeepingAll(self, _mock_exit, _mock_chdir, _mock_dup2, |
| 183 _mock_open, mock_close, _mock_setsid, |
| 184 _mock_fork): |
| 185 daemon.become_daemon(keep_fds=True) |
| 186 |
| 187 self.assertEqual(0, mock_close.call_count) |
| 188 |
| 182 def testClosesInvalidFds(self, _mock_exit, _mock_chdir, _mock_dup2, | 189 def testClosesInvalidFds(self, _mock_exit, _mock_chdir, _mock_dup2, |
| 183 _mock_open, mock_close, _mock_setsid, _mock_fork): | 190 _mock_open, mock_close, _mock_setsid, _mock_fork): |
| 184 mock_close.side_effect = EnvironmentError(errno.EIO, '') | 191 mock_close.side_effect = EnvironmentError(errno.EIO, '') |
| 185 with self.assertRaises(EnvironmentError): | 192 with self.assertRaises(EnvironmentError): |
| 186 daemon.become_daemon() | 193 daemon.become_daemon() |
| 187 | 194 |
| 188 mock_close.side_effect = EnvironmentError(errno.EBADF, '') | 195 mock_close.side_effect = EnvironmentError(errno.EBADF, '') |
| 189 daemon.become_daemon() | 196 daemon.become_daemon() |
| 190 | 197 |
| 191 def testOpensDevNull(self, _mock_exit, _mock_chdir, mock_dup2, mock_open, | 198 def testOpensDevNull(self, _mock_exit, _mock_chdir, mock_dup2, mock_open, |
| 192 _mock_close, _mock_setsid, _mock_fork): | 199 _mock_close, _mock_setsid, _mock_fork): |
| 193 handle = object() | 200 handle = object() |
| 194 mock_open.return_value = handle | 201 mock_open.return_value = handle |
| 195 | 202 |
| 196 daemon.become_daemon() | 203 daemon.become_daemon() |
| 197 | 204 |
| 198 self.assertEqual([ | 205 self.assertEqual([ |
| 199 ((handle, 0),), | 206 ((handle, 0),), |
| 200 ((handle, 1),), | 207 ((handle, 1),), |
| 201 ((handle, 2),), | 208 ((handle, 2),), |
| 202 ], mock_dup2.call_args_list) | 209 ], mock_dup2.call_args_list) |
| 203 | 210 |
| 211 def testOpensDevNullWithExceptions(self, _mock_exit, _mock_chdir, mock_dup2, |
| 212 mock_open, _mock_close, _mock_setsid, |
| 213 _mock_fork): |
| 214 handle = object() |
| 215 mock_open.return_value = handle |
| 216 |
| 217 daemon.become_daemon(keep_fds={1}) |
| 218 |
| 219 self.assertEqual([ |
| 220 ((handle, 0),), |
| 221 ((handle, 2),), |
| 222 ], mock_dup2.call_args_list) |
| 223 |
| 204 def testChangesToRoot(self, _mock_exit, mock_chdir, _mock_dup2, _mock_open, | 224 def testChangesToRoot(self, _mock_exit, mock_chdir, _mock_dup2, _mock_open, |
| 205 _mock_close, _mock_setsid, _mock_fork): | 225 _mock_close, _mock_setsid, _mock_fork): |
| 206 daemon.become_daemon() | 226 daemon.become_daemon() |
| 207 mock_chdir.assert_called_with('/') | 227 mock_chdir.assert_called_with('/') |
| 208 | 228 |
| 209 def testForkExitsParent(self, mock_exit, _mock_chdir, _mock_dup2, _mock_open, | 229 def testForkExitsParent(self, mock_exit, _mock_chdir, _mock_dup2, _mock_open, |
| 210 _mock_close, _mock_setsid, mock_fork): | 230 _mock_close, _mock_setsid, mock_fork): |
| 211 mock_fork.return_value = 0 | 231 mock_fork.return_value = 0 |
| 212 daemon.become_daemon() | 232 daemon.become_daemon() |
| 213 self.assertFalse(mock_exit.called) | 233 self.assertFalse(mock_exit.called) |
| 214 | 234 |
| 215 mock_fork.return_value = 123 | 235 mock_fork.return_value = 123 |
| 216 daemon.become_daemon() | 236 daemon.become_daemon() |
| 217 self.assertTrue(mock_exit.called) | 237 self.assertTrue(mock_exit.called) |
| OLD | NEW |