summaryrefslogtreecommitdiff
path: root/test/test_daemon.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_daemon.py')
-rw-r--r--test/test_daemon.py912
1 files changed, 464 insertions, 448 deletions
diff --git a/test/test_daemon.py b/test/test_daemon.py
index c3f46e3..6ed6ccf 100644
--- a/test/test_daemon.py
+++ b/test/test_daemon.py
@@ -1,18 +1,20 @@
# -*- coding: utf-8 -*-
#
# test/test_daemon.py
-# Part of python-daemon, an implementation of PEP 3143.
+# Part of ‘python-daemon’, an implementation of PEP 3143.
#
-# Copyright © 2008–2010 Ben Finney <ben+python@benfinney.id.au>
+# Copyright © 2008–2014 Ben Finney <ben+python@benfinney.id.au>
#
# This is free software: you may copy, modify, and/or distribute this work
-# under the terms of the Python Software Foundation License, version 2 or
-# later as published by the Python Software Foundation.
-# No warranty expressed or implied. See the file LICENSE.PSF-2 for details.
+# under the terms of the Apache License, version 2.0 as published by the
+# Apache Software Foundation.
+# No warranty expressed or implied. See the file LICENSE.ASF-2 for details.
-""" Unit test for daemon module.
+""" Unit test for ‘daemon’ module.
"""
+from __future__ import unicode_literals
+
import os
import sys
import tempfile
@@ -25,12 +27,12 @@ import atexit
from StringIO import StringIO
import scaffold
-from test_pidlockfile import (
- FakeFileDescriptorStringIO,
- setup_pidfile_fixtures,
- )
+from test_pidfile import (
+ FakeFileDescriptorStringIO,
+ setup_pidfile_fixtures,
+ )
-from daemon import pidlockfile
+from lockfile import pidlockfile
import daemon
@@ -42,19 +44,19 @@ class Exception_TestCase(scaffold.Exception_TestCase):
super(Exception_TestCase, self).__init__(*args, **kwargs)
self.valid_exceptions = {
- daemon.daemon.DaemonError: dict(
- min_args = 1,
- types = (Exception,),
- ),
- daemon.daemon.DaemonOSEnvironmentError: dict(
- min_args = 1,
- types = (daemon.daemon.DaemonError, OSError),
- ),
- daemon.daemon.DaemonProcessDetachError: dict(
- min_args = 1,
- types = (daemon.daemon.DaemonError, OSError),
- ),
- }
+ daemon.daemon.DaemonError: dict(
+ min_args=1,
+ types=(Exception,),
+ ),
+ daemon.daemon.DaemonOSEnvironmentError: dict(
+ min_args=1,
+ types=(daemon.daemon.DaemonError, OSError),
+ ),
+ daemon.daemon.DaemonProcessDetachError: dict(
+ min_args=1,
+ types=(daemon.daemon.DaemonError, OSError),
+ ),
+ }
def setup_daemon_context_fixtures(testcase):
@@ -67,35 +69,35 @@ def setup_daemon_context_fixtures(testcase):
testcase.mock_pidfile_path = tempfile.mktemp()
testcase.mock_pidlockfile = scaffold.Mock(
- "pidlockfile.PIDLockFile",
- tracker=testcase.mock_tracker)
+ "pidlockfile.PIDLockFile",
+ tracker=testcase.mock_tracker)
testcase.mock_pidlockfile.path = testcase.mock_pidfile_path
scaffold.mock(
- "daemon.daemon.is_detach_process_context_required",
- returns=True,
- tracker=testcase.mock_tracker)
+ "daemon.daemon.is_detach_process_context_required",
+ returns=True,
+ tracker=testcase.mock_tracker)
scaffold.mock(
- "daemon.daemon.make_default_signal_map",
- returns=object(),
- tracker=testcase.mock_tracker)
+ "daemon.daemon.make_default_signal_map",
+ returns=object(),
+ tracker=testcase.mock_tracker)
scaffold.mock(
- "os.getuid",
- returns=object(),
- tracker=testcase.mock_tracker)
+ "os.getuid",
+ returns=object(),
+ tracker=testcase.mock_tracker)
scaffold.mock(
- "os.getgid",
- returns=object(),
- tracker=testcase.mock_tracker)
+ "os.getgid",
+ returns=object(),
+ tracker=testcase.mock_tracker)
testcase.daemon_context_args = dict(
- stdin = testcase.stream_files_by_name['stdin'],
- stdout = testcase.stream_files_by_name['stdout'],
- stderr = testcase.stream_files_by_name['stderr'],
- )
+ stdin=testcase.stream_files_by_name['stdin'],
+ stdout=testcase.stream_files_by_name['stdout'],
+ stderr=testcase.stream_files_by_name['stderr'],
+ )
testcase.test_instance = daemon.DaemonContext(
- **testcase.daemon_context_args)
+ **testcase.daemon_context_args)
class DaemonContext_TestCase(scaffold.TestCase):
@@ -112,7 +114,7 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_instantiate(self):
""" New instance of DaemonContext should be created. """
self.failUnlessIsInstance(
- self.test_instance, daemon.daemon.DaemonContext)
+ self.test_instance, daemon.daemon.DaemonContext)
def test_minimum_zero_arguments(self):
""" Initialiser should not require any arguments. """
@@ -122,8 +124,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_chroot_directory(self):
""" Should have specified chroot_directory option. """
args = dict(
- chroot_directory = object(),
- )
+ chroot_directory=object(),
+ )
expect_directory = args['chroot_directory']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_directory, instance.chroot_directory)
@@ -131,8 +133,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_working_directory(self):
""" Should have specified working_directory option. """
args = dict(
- working_directory = object(),
- )
+ working_directory=object(),
+ )
expect_directory = args['working_directory']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_directory, instance.working_directory)
@@ -147,8 +149,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_creation_mask(self):
""" Should have specified umask option. """
args = dict(
- umask = object(),
- )
+ umask=object(),
+ )
expect_mask = args['umask']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_mask, instance.umask)
@@ -163,8 +165,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_uid(self):
""" Should have specified uid option. """
args = dict(
- uid = object(),
- )
+ uid=object(),
+ )
expect_id = args['uid']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_id, instance.uid)
@@ -179,8 +181,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_gid(self):
""" Should have specified gid option. """
args = dict(
- gid = object(),
- )
+ gid=object(),
+ )
expect_id = args['gid']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_id, instance.gid)
@@ -195,8 +197,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_detach_process(self):
""" Should have specified detach_process option. """
args = dict(
- detach_process = object(),
- )
+ detach_process=object(),
+ )
expect_value = args['detach_process']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_value, instance.detach_process)
@@ -212,8 +214,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_files_preserve(self):
""" Should have specified files_preserve option. """
args = dict(
- files_preserve = object(),
- )
+ files_preserve=object(),
+ )
expect_files_preserve = args['files_preserve']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_files_preserve, instance.files_preserve)
@@ -221,8 +223,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_pidfile(self):
""" Should have the specified pidfile. """
args = dict(
- pidfile = object(),
- )
+ pidfile=object(),
+ )
expect_pidfile = args['pidfile']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_pidfile, instance.pidfile)
@@ -230,8 +232,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_stdin(self):
""" Should have specified stdin option. """
args = dict(
- stdin = object(),
- )
+ stdin=object(),
+ )
expect_file = args['stdin']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_file, instance.stdin)
@@ -239,8 +241,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_stdout(self):
""" Should have specified stdout option. """
args = dict(
- stdout = object(),
- )
+ stdout=object(),
+ )
expect_file = args['stdout']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_file, instance.stdout)
@@ -248,8 +250,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_stderr(self):
""" Should have specified stderr option. """
args = dict(
- stderr = object(),
- )
+ stderr=object(),
+ )
expect_file = args['stderr']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_file, instance.stderr)
@@ -257,8 +259,8 @@ class DaemonContext_TestCase(scaffold.TestCase):
def test_has_specified_signal_map(self):
""" Should have specified signal_map option. """
args = dict(
- signal_map = object(),
- )
+ signal_map=object(),
+ )
expect_signal_map = args['signal_map']
instance = daemon.daemon.DaemonContext(**args)
self.failUnlessEqual(expect_signal_map, instance.signal_map)
@@ -291,8 +293,8 @@ class DaemonContext_is_open_TestCase(scaffold.TestCase):
""" Writing to is_open should fail. """
instance = self.test_instance
self.failUnlessRaises(
- AttributeError,
- setattr, instance, 'is_open', object())
+ AttributeError,
+ setattr, instance, 'is_open', object())
class DaemonContext_open_TestCase(scaffold.TestCase):
@@ -306,57 +308,57 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
self.test_instance._is_open = False
scaffold.mock(
- "daemon.daemon.detach_process_context",
- tracker=self.mock_tracker)
+ "daemon.daemon.detach_process_context",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.change_working_directory",
- tracker=self.mock_tracker)
+ "daemon.daemon.change_working_directory",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.change_root_directory",
- tracker=self.mock_tracker)
+ "daemon.daemon.change_root_directory",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.change_file_creation_mask",
- tracker=self.mock_tracker)
+ "daemon.daemon.change_file_creation_mask",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.change_process_owner",
- tracker=self.mock_tracker)
+ "daemon.daemon.change_process_owner",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.prevent_core_dump",
- tracker=self.mock_tracker)
+ "daemon.daemon.prevent_core_dump",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.close_all_open_files",
- tracker=self.mock_tracker)
+ "daemon.daemon.close_all_open_files",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.redirect_stream",
- tracker=self.mock_tracker)
+ "daemon.daemon.redirect_stream",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.set_signal_handlers",
- tracker=self.mock_tracker)
+ "daemon.daemon.set_signal_handlers",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.register_atexit_function",
- tracker=self.mock_tracker)
+ "daemon.daemon.register_atexit_function",
+ tracker=self.mock_tracker)
self.test_files_preserve_fds = object()
scaffold.mock(
- "daemon.daemon.DaemonContext._get_exclude_file_descriptors",
- returns=self.test_files_preserve_fds,
- tracker=self.mock_tracker)
+ "daemon.daemon.DaemonContext._get_exclude_file_descriptors",
+ returns=self.test_files_preserve_fds,
+ tracker=self.mock_tracker)
self.test_signal_handler_map = object()
scaffold.mock(
- "daemon.daemon.DaemonContext._make_signal_handler_map",
- returns=self.test_signal_handler_map,
- tracker=self.mock_tracker)
+ "daemon.daemon.DaemonContext._make_signal_handler_map",
+ returns=self.test_signal_handler_map,
+ tracker=self.mock_tracker)
scaffold.mock(
- "sys.stdin",
- tracker=self.mock_tracker)
+ "sys.stdin",
+ tracker=self.mock_tracker)
scaffold.mock(
- "sys.stdout",
- tracker=self.mock_tracker)
+ "sys.stdout",
+ tracker=self.mock_tracker)
scaffold.mock(
- "sys.stderr",
- tracker=self.mock_tracker)
+ "sys.stderr",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -369,22 +371,22 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance.detach_process = True
instance.pidfile = self.mock_pidlockfile
expect_mock_output = """\
- Called daemon.daemon.change_root_directory(...)
- Called daemon.daemon.prevent_core_dump()
- Called daemon.daemon.change_file_creation_mask(...)
- Called daemon.daemon.change_working_directory(...)
- Called daemon.daemon.change_process_owner(...)
- Called daemon.daemon.detach_process_context()
- Called daemon.daemon.DaemonContext._make_signal_handler_map()
- Called daemon.daemon.set_signal_handlers(...)
- Called daemon.daemon.DaemonContext._get_exclude_file_descriptors()
- Called daemon.daemon.close_all_open_files(...)
- Called daemon.daemon.redirect_stream(...)
- Called daemon.daemon.redirect_stream(...)
- Called daemon.daemon.redirect_stream(...)
- Called pidlockfile.PIDLockFile.__enter__()
- Called daemon.daemon.register_atexit_function(...)
- """ % vars()
+ Called daemon.daemon.change_root_directory(...)
+ Called daemon.daemon.prevent_core_dump()
+ Called daemon.daemon.change_file_creation_mask(...)
+ Called daemon.daemon.change_working_directory(...)
+ Called daemon.daemon.change_process_owner(...)
+ Called daemon.daemon.detach_process_context()
+ Called daemon.daemon.DaemonContext._make_signal_handler_map()
+ Called daemon.daemon.set_signal_handlers(...)
+ Called daemon.daemon.DaemonContext._get_exclude_file_descriptors()
+ Called daemon.daemon.close_all_open_files(...)
+ Called daemon.daemon.redirect_stream(...)
+ Called daemon.daemon.redirect_stream(...)
+ Called daemon.daemon.redirect_stream(...)
+ Called pidlockfile.PIDLockFile.__enter__()
+ Called daemon.daemon.register_atexit_function(...)
+ """ % vars()
self.mock_tracker.clear()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -394,7 +396,7 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
instance._is_open = True
expect_mock_output = """\
- """
+ """
self.mock_tracker.clear()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -405,10 +407,10 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
chroot_directory = object()
instance.chroot_directory = chroot_directory
expect_mock_output = """\
- Called daemon.daemon.change_root_directory(
- %(chroot_directory)r)
- ...
- """ % vars()
+ Called daemon.daemon.change_root_directory(
+ %(chroot_directory)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -417,7 +419,7 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
instance.chroot_directory = None
unwanted_output = """\
- ...Called daemon.daemon.change_root_directory(...)..."""
+ ...Called daemon.daemon.change_root_directory(...)..."""
instance.open()
self.failIfMockCheckerMatch(unwanted_output)
@@ -425,9 +427,9 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
""" Should request prevention of core dumps. """
instance = self.test_instance
expect_mock_output = """\
- Called daemon.daemon.prevent_core_dump()
- ...
- """ % vars()
+ Called daemon.daemon.prevent_core_dump()
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -436,7 +438,7 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
instance.prevent_core = False
unwanted_output = """\
- ...Called daemon.daemon.prevent_core_dump()..."""
+ ...Called daemon.daemon.prevent_core_dump()..."""
instance.open()
self.failIfMockCheckerMatch(unwanted_output)
@@ -445,11 +447,11 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
expect_exclude = self.test_files_preserve_fds
expect_mock_output = """\
- ...
- Called daemon.daemon.close_all_open_files(
- exclude=%(expect_exclude)r)
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.close_all_open_files(
+ exclude=%(expect_exclude)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -459,11 +461,11 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
working_directory = object()
instance.working_directory = working_directory
expect_mock_output = """\
- ...
- Called daemon.daemon.change_working_directory(
- %(working_directory)r)
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.change_working_directory(
+ %(working_directory)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -473,10 +475,10 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
umask = object()
instance.umask = umask
expect_mock_output = """\
- ...
- Called daemon.daemon.change_file_creation_mask(%(umask)r)
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.change_file_creation_mask(%(umask)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -488,10 +490,10 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance.uid = uid
instance.gid = gid
expect_mock_output = """\
- ...
- Called daemon.daemon.change_process_owner(%(uid)r, %(gid)r)
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.change_process_owner(%(uid)r, %(gid)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -499,10 +501,10 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
""" Should request detach of process context. """
instance = self.test_instance
expect_mock_output = """\
- ...
- Called daemon.daemon.detach_process_context()
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.detach_process_context()
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -511,7 +513,7 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
instance.detach_process = False
unwanted_output = """\
- ...Called daemon.daemon.detach_process_context(...)..."""
+ ...Called daemon.daemon.detach_process_context(...)..."""
instance.open()
self.failIfMockCheckerMatch(unwanted_output)
@@ -521,11 +523,11 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance.signal_map = object()
expect_signal_handler_map = self.test_signal_handler_map
expect_mock_output = """\
- ...
- Called daemon.daemon.set_signal_handlers(
- %(expect_signal_handler_map)r)
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.set_signal_handlers(
+ %(expect_signal_handler_map)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -533,20 +535,20 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
""" Should request redirection of standard stream files. """
instance = self.test_instance
(system_stdin, system_stdout, system_stderr) = (
- sys.stdin, sys.stdout, sys.stderr)
+ sys.stdin, sys.stdout, sys.stderr)
(target_stdin, target_stdout, target_stderr) = (
- self.stream_files_by_name[name]
- for name in ['stdin', 'stdout', 'stderr'])
+ self.stream_files_by_name[name]
+ for name in ['stdin', 'stdout', 'stderr'])
expect_mock_output = """\
- ...
- Called daemon.daemon.redirect_stream(
- %(system_stdin)r, %(target_stdin)r)
- Called daemon.daemon.redirect_stream(
- %(system_stdout)r, %(target_stdout)r)
- Called daemon.daemon.redirect_stream(
- %(system_stderr)r, %(target_stderr)r)
- ...
- """ % vars()
+ ...
+ Called daemon.daemon.redirect_stream(
+ %(system_stdin)r, %(target_stdin)r)
+ Called daemon.daemon.redirect_stream(
+ %(system_stdout)r, %(target_stdout)r)
+ Called daemon.daemon.redirect_stream(
+ %(system_stderr)r, %(target_stderr)r)
+ ...
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -555,10 +557,10 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
instance.pidfile = self.mock_pidlockfile
expect_mock_output = """\
- ...
- Called pidlockfile.PIDLockFile.__enter__()
- ...
- """
+ ...
+ Called pidlockfile.PIDLockFile.__enter__()
+ ...
+ """
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -573,9 +575,9 @@ class DaemonContext_open_TestCase(scaffold.TestCase):
instance = self.test_instance
close_method = instance.close
expect_mock_output = """\
- ...
- Called daemon.daemon.register_atexit_function(%(close_method)r)
- """ % vars()
+ ...
+ Called daemon.daemon.register_atexit_function(%(close_method)r)
+ """ % vars()
instance.open()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -600,7 +602,7 @@ class DaemonContext_close_TestCase(scaffold.TestCase):
instance._is_open = False
instance.pidfile = object()
expect_mock_output = """\
- """
+ """
self.mock_tracker.clear()
instance.close()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -610,8 +612,8 @@ class DaemonContext_close_TestCase(scaffold.TestCase):
instance = self.test_instance
instance.pidfile = self.mock_pidlockfile
expect_mock_output = """\
- Called pidlockfile.PIDLockFile.__exit__(None, None, None)
- """
+ Called pidlockfile.PIDLockFile.__exit__(None, None, None)
+ """
instance.close()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -638,8 +640,8 @@ class DaemonContext_context_manager_enter_TestCase(scaffold.TestCase):
self.mock_tracker.clear()
scaffold.mock(
- "daemon.daemon.DaemonContext.open",
- tracker=self.mock_tracker)
+ "daemon.daemon.DaemonContext.open",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -649,8 +651,8 @@ class DaemonContext_context_manager_enter_TestCase(scaffold.TestCase):
""" Should open the DaemonContext. """
instance = self.test_instance
expect_mock_output = """\
- Called daemon.daemon.DaemonContext.open()
- """
+ Called daemon.daemon.DaemonContext.open()
+ """
instance.__enter__()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -671,14 +673,14 @@ class DaemonContext_context_manager_exit_TestCase(scaffold.TestCase):
self.mock_tracker.clear()
self.test_args = dict(
- exc_type = object(),
- exc_value = object(),
- traceback = object(),
- )
+ exc_type=object(),
+ exc_value=object(),
+ traceback=object(),
+ )
scaffold.mock(
- "daemon.daemon.DaemonContext.close",
- tracker=self.mock_tracker)
+ "daemon.daemon.DaemonContext.close",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -689,8 +691,8 @@ class DaemonContext_context_manager_exit_TestCase(scaffold.TestCase):
instance = self.test_instance
args = self.test_args
expect_mock_output = """\
- Called daemon.daemon.DaemonContext.close()
- """
+ Called daemon.daemon.DaemonContext.close()
+ """
instance.__exit__(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -724,8 +726,8 @@ class DaemonContext_terminate_TestCase(scaffold.TestCase):
args = self.test_args
expect_exception = SystemExit
self.failUnlessRaises(
- expect_exception,
- instance.terminate, *args)
+ expect_exception,
+ instance.terminate, *args)
def test_exception_message_contains_signal_number(self):
""" Should raise exception with a message containing signal number. """
@@ -735,7 +737,7 @@ class DaemonContext_terminate_TestCase(scaffold.TestCase):
expect_exception = SystemExit
try:
instance.terminate(*args)
- except expect_exception, exc:
+ except expect_exception as exc:
pass
self.failUnlessIn(str(exc), str(signal_number))
@@ -755,17 +757,17 @@ class DaemonContext_get_exclude_file_descriptors_TestCase(scaffold.TestCase):
23: FakeFileDescriptorStringIO(),
37: 37,
42: FakeFileDescriptorStringIO(),
- }
+ }
for (fileno, item) in self.test_files.items():
if hasattr(item, '_fileno'):
item._fileno = fileno
self.test_file_descriptors = set(
- fd for (fd, item) in self.test_files.items()
- if item is not None)
+ fd for (fd, item) in self.test_files.items()
+ if item is not None)
self.test_file_descriptors.update(
- self.stream_files_by_name[name].fileno()
- for name in ['stdin', 'stdout', 'stderr']
- )
+ self.stream_files_by_name[name].fileno()
+ for name in ['stdin', 'stdout', 'stderr']
+ )
def tearDown(self):
""" Tear down test fixtures. """
@@ -784,8 +786,8 @@ class DaemonContext_get_exclude_file_descriptors_TestCase(scaffold.TestCase):
instance = self.test_instance
instance.files_preserve = None
expect_result = set(
- stream.fileno()
- for stream in self.stream_files_by_name.values())
+ stream.fileno()
+ for stream in self.stream_files_by_name.values())
result = instance._get_exclude_file_descriptors()
self.failUnlessEqual(expect_result, result)
@@ -846,8 +848,8 @@ class DaemonContext_make_signal_handler_TestCase(scaffold.TestCase):
target = 'b0gUs'
expect_error = AttributeError
self.failUnlessRaises(
- expect_error,
- instance._make_signal_handler, target)
+ expect_error,
+ instance._make_signal_handler, target)
def test_returns_object_for_object(self):
""" Should return same object for any other object. """
@@ -866,24 +868,24 @@ class DaemonContext_make_signal_handler_map_TestCase(scaffold.TestCase):
setup_daemon_context_fixtures(self)
self.test_instance.signal_map = {
- object(): object(),
- object(): object(),
- object(): object(),
- }
+ object(): object(),
+ object(): object(),
+ object(): object(),
+ }
self.test_signal_handlers = dict(
- (key, object())
- for key in self.test_instance.signal_map.values())
+ (key, object())
+ for key in self.test_instance.signal_map.values())
self.test_signal_handler_map = dict(
- (key, self.test_signal_handlers[target])
- for (key, target) in self.test_instance.signal_map.items())
+ (key, self.test_signal_handlers[target])
+ for (key, target) in self.test_instance.signal_map.items())
def mock_make_signal_handler(target):
return self.test_signal_handlers[target]
scaffold.mock(
- "daemon.daemon.DaemonContext._make_signal_handler",
- returns_func=mock_make_signal_handler,
- tracker=self.mock_tracker)
+ "daemon.daemon.DaemonContext._make_signal_handler",
+ returns_func=mock_make_signal_handler,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -905,13 +907,13 @@ class change_working_directory_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "os.chdir",
- tracker=self.mock_tracker)
+ "os.chdir",
+ tracker=self.mock_tracker)
self.test_directory = object()
self.test_args = dict(
- directory=self.test_directory,
- )
+ directory=self.test_directory,
+ )
def tearDown(self):
""" Tear down test fixtures. """
@@ -922,8 +924,8 @@ class change_working_directory_TestCase(scaffold.TestCase):
args = self.test_args
directory = self.test_directory
expect_mock_output = """\
- Called os.chdir(%(directory)r)
- """ % vars()
+ Called os.chdir(%(directory)r)
+ """ % vars()
daemon.daemon.change_working_directory(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -934,8 +936,8 @@ class change_working_directory_TestCase(scaffold.TestCase):
os.chdir.mock_raises = test_error
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.change_working_directory, **args)
+ expect_error,
+ daemon.daemon.change_working_directory, **args)
def test_error_message_contains_original_error_message(self):
""" Should raise a DaemonError with original message. """
@@ -945,7 +947,7 @@ class change_working_directory_TestCase(scaffold.TestCase):
expect_error = daemon.daemon.DaemonOSEnvironmentError
try:
daemon.daemon.change_working_directory(**args)
- except expect_error, exc:
+ except expect_error as exc:
pass
self.failUnlessIn(str(exc), str(test_error))
@@ -958,16 +960,16 @@ class change_root_directory_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "os.chdir",
- tracker=self.mock_tracker)
+ "os.chdir",
+ tracker=self.mock_tracker)
scaffold.mock(
- "os.chroot",
- tracker=self.mock_tracker)
+ "os.chroot",
+ tracker=self.mock_tracker)
self.test_directory = object()
self.test_args = dict(
- directory=self.test_directory,
- )
+ directory=self.test_directory,
+ )
def tearDown(self):
""" Tear down test fixtures. """
@@ -978,9 +980,9 @@ class change_root_directory_TestCase(scaffold.TestCase):
args = self.test_args
directory = self.test_directory
expect_mock_output = """\
- Called os.chdir(%(directory)r)
- ...
- """ % vars()
+ Called os.chdir(%(directory)r)
+ ...
+ """ % vars()
daemon.daemon.change_root_directory(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -989,9 +991,9 @@ class change_root_directory_TestCase(scaffold.TestCase):
args = self.test_args
directory = self.test_directory
expect_mock_output = """\
- ...
- Called os.chroot(%(directory)r)
- """ % vars()
+ ...
+ Called os.chroot(%(directory)r)
+ """ % vars()
daemon.daemon.change_root_directory(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1002,8 +1004,8 @@ class change_root_directory_TestCase(scaffold.TestCase):
os.chdir.mock_raises = test_error
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.change_root_directory, **args)
+ expect_error,
+ daemon.daemon.change_root_directory, **args)
def test_raises_daemon_error_on_os_error_from_chroot(self):
""" Should raise a DaemonError on receiving an OSError from chroot. """
@@ -1012,8 +1014,8 @@ class change_root_directory_TestCase(scaffold.TestCase):
os.chroot.mock_raises = test_error
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.change_root_directory, **args)
+ expect_error,
+ daemon.daemon.change_root_directory, **args)
def test_error_message_contains_original_error_message(self):
""" Should raise a DaemonError with original message. """
@@ -1023,7 +1025,7 @@ class change_root_directory_TestCase(scaffold.TestCase):
expect_error = daemon.daemon.DaemonOSEnvironmentError
try:
daemon.daemon.change_root_directory(**args)
- except expect_error, exc:
+ except expect_error as exc:
pass
self.failUnlessIn(str(exc), str(test_error))
@@ -1036,13 +1038,13 @@ class change_file_creation_mask_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "os.umask",
- tracker=self.mock_tracker)
+ "os.umask",
+ tracker=self.mock_tracker)
self.test_mask = object()
self.test_args = dict(
- mask=self.test_mask,
- )
+ mask=self.test_mask,
+ )
def tearDown(self):
""" Tear down test fixtures. """
@@ -1053,8 +1055,8 @@ class change_file_creation_mask_TestCase(scaffold.TestCase):
args = self.test_args
mask = self.test_mask
expect_mock_output = """\
- Called os.umask(%(mask)r)
- """ % vars()
+ Called os.umask(%(mask)r)
+ """ % vars()
daemon.daemon.change_file_creation_mask(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1065,8 +1067,8 @@ class change_file_creation_mask_TestCase(scaffold.TestCase):
os.umask.mock_raises = test_error
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.change_file_creation_mask, **args)
+ expect_error,
+ daemon.daemon.change_file_creation_mask, **args)
def test_error_message_contains_original_error_message(self):
""" Should raise a DaemonError with original message. """
@@ -1076,7 +1078,7 @@ class change_file_creation_mask_TestCase(scaffold.TestCase):
expect_error = daemon.daemon.DaemonOSEnvironmentError
try:
daemon.daemon.change_file_creation_mask(**args)
- except expect_error, exc:
+ except expect_error as exc:
pass
self.failUnlessIn(str(exc), str(test_error))
@@ -1089,18 +1091,18 @@ class change_process_owner_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "os.setuid",
- tracker=self.mock_tracker)
+ "os.setuid",
+ tracker=self.mock_tracker)
scaffold.mock(
- "os.setgid",
- tracker=self.mock_tracker)
+ "os.setgid",
+ tracker=self.mock_tracker)
self.test_uid = object()
self.test_gid = object()
self.test_args = dict(
- uid=self.test_uid,
- gid=self.test_gid,
- )
+ uid=self.test_uid,
+ gid=self.test_gid,
+ )
def tearDown(self):
""" Tear down test fixtures. """
@@ -1116,9 +1118,9 @@ class change_process_owner_TestCase(scaffold.TestCase):
"""
args = self.test_args
expect_mock_output = """\
- Called os.setgid(...)
- Called os.setuid(...)
- """ % vars()
+ Called os.setgid(...)
+ Called os.setuid(...)
+ """ % vars()
daemon.daemon.change_process_owner(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1127,9 +1129,9 @@ class change_process_owner_TestCase(scaffold.TestCase):
args = self.test_args
gid = self.test_gid
expect_mock_output = """\
- Called os.setgid(%(gid)r)
- ...
- """ % vars()
+ Called os.setgid(%(gid)r)
+ ...
+ """ % vars()
daemon.daemon.change_process_owner(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1138,9 +1140,9 @@ class change_process_owner_TestCase(scaffold.TestCase):
args = self.test_args
uid = self.test_uid
expect_mock_output = """\
- ...
- Called os.setuid(%(uid)r)
- """ % vars()
+ ...
+ Called os.setuid(%(uid)r)
+ """ % vars()
daemon.daemon.change_process_owner(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1151,8 +1153,8 @@ class change_process_owner_TestCase(scaffold.TestCase):
os.setgid.mock_raises = test_error
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.change_process_owner, **args)
+ expect_error,
+ daemon.daemon.change_process_owner, **args)
def test_raises_daemon_error_on_os_error_from_setuid(self):
""" Should raise a DaemonError on receiving an OSError from setuid. """
@@ -1161,8 +1163,8 @@ class change_process_owner_TestCase(scaffold.TestCase):
os.setuid.mock_raises = test_error
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.change_process_owner, **args)
+ expect_error,
+ daemon.daemon.change_process_owner, **args)
def test_error_message_contains_original_error_message(self):
""" Should raise a DaemonError with original message. """
@@ -1172,7 +1174,7 @@ class change_process_owner_TestCase(scaffold.TestCase):
expect_error = daemon.daemon.DaemonOSEnvironmentError
try:
daemon.daemon.change_process_owner(**args)
- except expect_error, exc:
+ except expect_error as exc:
pass
self.failUnlessIn(str(exc), str(test_error))
@@ -1186,14 +1188,14 @@ class prevent_core_dump_TestCase(scaffold.TestCase):
self.RLIMIT_CORE = object()
scaffold.mock(
- "resource.RLIMIT_CORE", mock_obj=self.RLIMIT_CORE,
- tracker=self.mock_tracker)
+ "resource.RLIMIT_CORE", mock_obj=self.RLIMIT_CORE,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.getrlimit", returns=None,
- tracker=self.mock_tracker)
+ "resource.getrlimit", returns=None,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.setrlimit", returns=None,
- tracker=self.mock_tracker)
+ "resource.setrlimit", returns=None,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1204,12 +1206,12 @@ class prevent_core_dump_TestCase(scaffold.TestCase):
expect_resource = self.RLIMIT_CORE
expect_limit = (0, 0)
expect_mock_output = """\
- Called resource.getrlimit(
- %(expect_resource)r)
- Called resource.setrlimit(
- %(expect_resource)r,
- %(expect_limit)r)
- """ % vars()
+ Called resource.getrlimit(
+ %(expect_resource)r)
+ Called resource.setrlimit(
+ %(expect_resource)r,
+ %(expect_limit)r)
+ """ % vars()
daemon.daemon.prevent_core_dump()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1223,8 +1225,8 @@ class prevent_core_dump_TestCase(scaffold.TestCase):
resource.getrlimit.mock_returns_func = mock_getrlimit
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.prevent_core_dump)
+ expect_error,
+ daemon.daemon.prevent_core_dump)
class close_file_descriptor_if_open_TestCase(scaffold.TestCase):
@@ -1237,8 +1239,8 @@ class close_file_descriptor_if_open_TestCase(scaffold.TestCase):
self.test_fd = 274
scaffold.mock(
- "os.close",
- tracker=self.mock_tracker)
+ "os.close",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1248,8 +1250,8 @@ class close_file_descriptor_if_open_TestCase(scaffold.TestCase):
""" Should request close of file descriptor. """
fd = self.test_fd
expect_mock_output = """\
- Called os.close(%(fd)r)
- """ % vars()
+ Called os.close(%(fd)r)
+ """ % vars()
daemon.daemon.close_file_descriptor_if_open(fd)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1261,8 +1263,8 @@ class close_file_descriptor_if_open_TestCase(scaffold.TestCase):
raise test_error
os.close.mock_returns_func = os_close
expect_mock_output = """\
- Called os.close(%(fd)r)
- """ % vars()
+ Called os.close(%(fd)r)
+ """ % vars()
daemon.daemon.close_file_descriptor_if_open(fd)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1275,8 +1277,8 @@ class close_file_descriptor_if_open_TestCase(scaffold.TestCase):
os.close.mock_returns_func = os_close
expect_error = daemon.daemon.DaemonOSEnvironmentError
self.failUnlessRaises(
- expect_error,
- daemon.daemon.close_file_descriptor_if_open, fd)
+ expect_error,
+ daemon.daemon.close_file_descriptor_if_open, fd)
class maxfd_TestCase(scaffold.TestCase):
@@ -1304,9 +1306,9 @@ class maxfd_TestCase(scaffold.TestCase):
expect_minimum = 2048
maxfd = daemon.daemon.MAXFD
self.failUnless(
- expect_minimum <= maxfd,
- msg="MAXFD should be at least %(expect_minimum)r (got %(maxfd)r)"
- % vars())
+ expect_minimum <= maxfd,
+ msg="MAXFD should be at least %(expect_minimum)r (got %(maxfd)r)"
+ % vars())
class get_maximum_file_descriptors_TestCase(scaffold.TestCase):
@@ -1328,18 +1330,18 @@ class get_maximum_file_descriptors_TestCase(scaffold.TestCase):
self.test_maxfd = object()
scaffold.mock(
- "daemon.daemon.MAXFD", mock_obj=self.test_maxfd,
- tracker=self.mock_tracker)
+ "daemon.daemon.MAXFD", mock_obj=self.test_maxfd,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.RLIMIT_NOFILE", mock_obj=self.RLIMIT_NOFILE,
- tracker=self.mock_tracker)
+ "resource.RLIMIT_NOFILE", mock_obj=self.RLIMIT_NOFILE,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.RLIM_INFINITY", mock_obj=self.RLIM_INFINITY,
- tracker=self.mock_tracker)
+ "resource.RLIM_INFINITY", mock_obj=self.RLIM_INFINITY,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.getrlimit", returns_func=mock_getrlimit,
- tracker=self.mock_tracker)
+ "resource.getrlimit", returns_func=mock_getrlimit,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1378,23 +1380,23 @@ class close_all_open_files_TestCase(scaffold.TestCase):
self.test_maxfd = 8
scaffold.mock(
- "daemon.daemon.get_maximum_file_descriptors",
- returns=self.test_maxfd,
- tracker=self.mock_tracker)
+ "daemon.daemon.get_maximum_file_descriptors",
+ returns=self.test_maxfd,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.RLIMIT_NOFILE", mock_obj=self.RLIMIT_NOFILE,
- tracker=self.mock_tracker)
+ "resource.RLIMIT_NOFILE", mock_obj=self.RLIMIT_NOFILE,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.RLIM_INFINITY", mock_obj=self.RLIM_INFINITY,
- tracker=self.mock_tracker)
+ "resource.RLIM_INFINITY", mock_obj=self.RLIM_INFINITY,
+ tracker=self.mock_tracker)
scaffold.mock(
- "resource.getrlimit", returns_func=mock_getrlimit,
- tracker=self.mock_tracker)
+ "resource.getrlimit", returns_func=mock_getrlimit,
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.close_file_descriptor_if_open",
- tracker=self.mock_tracker)
+ "daemon.daemon.close_file_descriptor_if_open",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1404,9 +1406,9 @@ class close_all_open_files_TestCase(scaffold.TestCase):
""" Should request close of all open files. """
expect_file_descriptors = reversed(range(self.test_maxfd))
expect_mock_output = "...\n" + "".join(
- "Called daemon.daemon.close_file_descriptor_if_open(%(fd)r)\n"
- % vars()
- for fd in expect_file_descriptors)
+ "Called daemon.daemon.close_file_descriptor_if_open(%(fd)r)\n"
+ % vars()
+ for fd in expect_file_descriptors)
daemon.daemon.close_all_open_files()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1414,15 +1416,15 @@ class close_all_open_files_TestCase(scaffold.TestCase):
""" Should request close of all open files but those excluded. """
test_exclude = set([3, 7])
args = dict(
- exclude = test_exclude,
- )
+ exclude=test_exclude,
+ )
expect_file_descriptors = (
fd for fd in reversed(range(self.test_maxfd))
if fd not in test_exclude)
expect_mock_output = "...\n" + "".join(
- "Called daemon.daemon.close_file_descriptor_if_open(%(fd)r)\n"
- % vars()
- for fd in expect_file_descriptors)
+ "Called daemon.daemon.close_file_descriptor_if_open(%(fd)r)\n"
+ % vars()
+ for fd in expect_file_descriptors)
daemon.daemon.close_all_open_files(**args)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1439,18 +1441,18 @@ class detach_process_context_TestCase(scaffold.TestCase):
test_pids = [0, 0]
scaffold.mock(
- "os.fork", returns_iter=test_pids,
- tracker=self.mock_tracker)
+ "os.fork", returns_iter=test_pids,
+ tracker=self.mock_tracker)
scaffold.mock(
- "os.setsid",
- tracker=self.mock_tracker)
+ "os.setsid",
+ tracker=self.mock_tracker)
def raise_os_exit(status=None):
raise self.FakeOSExit(status)
scaffold.mock(
- "os._exit", returns_func=raise_os_exit,
- tracker=self.mock_tracker)
+ "os._exit", returns_func=raise_os_exit,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1459,15 +1461,16 @@ class detach_process_context_TestCase(scaffold.TestCase):
def test_parent_exits(self):
""" Parent process should exit. """
parent_pid = 23
- scaffold.mock("os.fork", returns_iter=[parent_pid],
- tracker=self.mock_tracker)
+ scaffold.mock(
+ "os.fork", returns_iter=[parent_pid],
+ tracker=self.mock_tracker)
expect_mock_output = """\
- Called os.fork()
- Called os._exit(0)
- """
+ Called os.fork()
+ Called os._exit(0)
+ """
self.failUnlessRaises(
- self.FakeOSExit,
- daemon.daemon.detach_process_context)
+ self.FakeOSExit,
+ daemon.daemon.detach_process_context)
self.failUnlessMockCheckerMatch(expect_mock_output)
def test_first_fork_error_raises_error(self):
@@ -1478,46 +1481,50 @@ class detach_process_context_TestCase(scaffold.TestCase):
test_pids_iter = iter([fork_error])
def mock_fork():
- next = test_pids_iter.next()
- if isinstance(next, Exception):
- raise next
+ next_item = test_pids_iter.next()
+ if isinstance(next_item, Exception):
+ raise next_item
else:
- return next
+ return next_item
- scaffold.mock("os.fork", returns_func=mock_fork,
- tracker=self.mock_tracker)
+ scaffold.mock(
+ "os.fork",
+ returns_func=mock_fork,
+ tracker=self.mock_tracker)
expect_mock_output = """\
- Called os.fork()
- """
+ Called os.fork()
+ """
self.failUnlessRaises(
- daemon.daemon.DaemonProcessDetachError,
- daemon.daemon.detach_process_context)
+ daemon.daemon.DaemonProcessDetachError,
+ daemon.daemon.detach_process_context)
self.failUnlessMockCheckerMatch(expect_mock_output)
def test_child_starts_new_process_group(self):
""" Child should start new process group. """
expect_mock_output = """\
- Called os.fork()
- Called os.setsid()
- ...
- """
+ Called os.fork()
+ Called os.setsid()
+ ...
+ """
daemon.daemon.detach_process_context()
self.failUnlessMockCheckerMatch(expect_mock_output)
def test_child_forks_next_parent_exits(self):
""" Child should fork, then exit if parent. """
test_pids = [0, 42]
- scaffold.mock("os.fork", returns_iter=test_pids,
- tracker=self.mock_tracker)
+ scaffold.mock(
+ "os.fork",
+ returns_iter=test_pids,
+ tracker=self.mock_tracker)
expect_mock_output = """\
- Called os.fork()
- Called os.setsid()
- Called os.fork()
- Called os._exit(0)
- """
+ Called os.fork()
+ Called os.setsid()
+ Called os.fork()
+ Called os._exit(0)
+ """
self.failUnlessRaises(
- self.FakeOSExit,
- daemon.daemon.detach_process_context)
+ self.FakeOSExit,
+ daemon.daemon.detach_process_context)
self.failUnlessMockCheckerMatch(expect_mock_output)
def test_second_fork_error_reports_to_stderr(self):
@@ -1528,31 +1535,33 @@ class detach_process_context_TestCase(scaffold.TestCase):
test_pids_iter = iter([0, fork_error])
def mock_fork():
- next = test_pids_iter.next()
- if isinstance(next, Exception):
- raise next
+ next_item = test_pids_iter.next()
+ if isinstance(next_item, Exception):
+ raise next_item
else:
- return next
+ return next_item
- scaffold.mock("os.fork", returns_func=mock_fork,
- tracker=self.mock_tracker)
+ scaffold.mock(
+ "os.fork",
+ returns_func=mock_fork,
+ tracker=self.mock_tracker)
expect_mock_output = """\
- Called os.fork()
- Called os.setsid()
- Called os.fork()
- """
+ Called os.fork()
+ Called os.setsid()
+ Called os.fork()
+ """
self.failUnlessRaises(
- daemon.daemon.DaemonProcessDetachError,
- daemon.daemon.detach_process_context)
+ daemon.daemon.DaemonProcessDetachError,
+ daemon.daemon.detach_process_context)
self.failUnlessMockCheckerMatch(expect_mock_output)
def test_child_forks_next_child_continues(self):
""" Child should fork, then continue if child. """
expect_mock_output = """\
- Called os.fork()
- Called os.setsid()
- Called os.fork()
- """ % vars()
+ Called os.fork()
+ Called os.setsid()
+ Called os.fork()
+ """ % vars()
daemon.daemon.detach_process_context()
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1567,9 +1576,9 @@ class is_process_started_by_init_TestCase(scaffold.TestCase):
self.test_ppid = 765
scaffold.mock(
- "os.getppid",
- returns=self.test_ppid,
- tracker=self.mock_tracker)
+ "os.getppid",
+ returns=self.test_ppid,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1606,21 +1615,21 @@ class is_socket_TestCase(scaffold.TestCase):
self.mock_socket_getsockopt_func = mock_getsockopt
self.mock_socket_error = socket.error(
- errno.ENOTSOCK,
- "Socket operation on non-socket")
+ errno.ENOTSOCK,
+ "Socket operation on non-socket")
self.mock_socket = scaffold.Mock(
- "socket.socket",
- tracker=self.mock_tracker)
+ "socket.socket",
+ tracker=self.mock_tracker)
self.mock_socket.getsockopt.mock_raises = self.mock_socket_error
def mock_socket_fromfd(fd, family, type, proto=None):
return self.mock_socket
scaffold.mock(
- "socket.fromfd",
- returns_func=mock_socket_fromfd,
- tracker=self.mock_tracker)
+ "socket.fromfd",
+ returns_func=mock_socket_fromfd,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1648,7 +1657,7 @@ class is_socket_TestCase(scaffold.TestCase):
test_fd = 23
getsockopt = self.mock_socket.getsockopt
getsockopt.mock_raises = socket.error(
- object(), "Weird socket stuff")
+ object(), "Weird socket stuff")
expect_result = True
result = daemon.daemon.is_socket(test_fd)
self.failUnlessIs(expect_result, result)
@@ -1671,9 +1680,9 @@ class is_process_started_by_superserver_TestCase(scaffold.TestCase):
self.mock_stdin_is_socket_func = (lambda: False)
scaffold.mock(
- "daemon.daemon.is_socket",
- returns_func=mock_is_socket,
- tracker=self.mock_tracker)
+ "daemon.daemon.is_socket",
+ returns_func=mock_is_socket,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1701,11 +1710,11 @@ class is_detach_process_context_required_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "daemon.daemon.is_process_started_by_init",
- tracker=self.mock_tracker)
+ "daemon.daemon.is_process_started_by_init",
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.is_process_started_by_superserver",
- tracker=self.mock_tracker)
+ "daemon.daemon.is_process_started_by_superserver",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1737,25 +1746,25 @@ def setup_streams_fixtures(testcase):
testcase.mock_tracker = scaffold.MockTracker()
testcase.stream_file_paths = dict(
- stdin = tempfile.mktemp(),
- stdout = tempfile.mktemp(),
- stderr = tempfile.mktemp(),
- )
+ stdin=tempfile.mktemp(),
+ stdout=tempfile.mktemp(),
+ stderr=tempfile.mktemp(),
+ )
testcase.stream_files_by_name = dict(
- (name, FakeFileDescriptorStringIO())
- for name in ['stdin', 'stdout', 'stderr']
- )
+ (name, FakeFileDescriptorStringIO())
+ for name in ['stdin', 'stdout', 'stderr']
+ )
testcase.stream_files_by_path = dict(
- (testcase.stream_file_paths[name],
- testcase.stream_files_by_name[name])
- for name in ['stdin', 'stdout', 'stderr']
- )
+ (testcase.stream_file_paths[name],
+ testcase.stream_files_by_name[name])
+ for name in ['stdin', 'stdout', 'stderr']
+ )
scaffold.mock(
- "os.dup2",
- tracker=testcase.mock_tracker)
+ "os.dup2",
+ tracker=testcase.mock_tracker)
class redirect_stream_TestCase(scaffold.TestCase):
@@ -1777,9 +1786,9 @@ class redirect_stream_TestCase(scaffold.TestCase):
return result
scaffold.mock(
- "os.open",
- returns_func=mock_open,
- tracker=self.mock_tracker)
+ "os.open",
+ returns_func=mock_open,
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1792,8 +1801,8 @@ class redirect_stream_TestCase(scaffold.TestCase):
target_stream = self.test_target_stream
target_fileno = target_stream.fileno()
expect_mock_output = """\
- Called os.dup2(%(target_fileno)r, %(system_fileno)r)
- """ % vars()
+ Called os.dup2(%(target_fileno)r, %(system_fileno)r)
+ """ % vars()
daemon.daemon.redirect_stream(system_stream, target_stream)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1807,9 +1816,9 @@ class redirect_stream_TestCase(scaffold.TestCase):
null_file = self.test_null_file
null_fileno = null_file.fileno()
expect_mock_output = """\
- Called os.open(%(null_path)r, %(null_flag)r)
- Called os.dup2(%(null_fileno)r, %(system_fileno)r)
- """ % vars()
+ Called os.open(%(null_path)r, %(null_flag)r)
+ Called os.dup2(%(null_fileno)r, %(system_fileno)r)
+ """ % vars()
daemon.daemon.redirect_stream(system_stream, target_stream)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1821,38 +1830,38 @@ class make_default_signal_map_TestCase(scaffold.TestCase):
""" Set up test fixtures. """
self.mock_tracker = scaffold.MockTracker()
- mock_signal_module = ModuleType('signal')
+ mock_signal_module = ModuleType(b'signal')
mock_signal_names = [
- 'SIGHUP',
- 'SIGCLD',
- 'SIGSEGV',
- 'SIGTSTP',
- 'SIGTTIN',
- 'SIGTTOU',
- 'SIGTERM',
- ]
+ 'SIGHUP',
+ 'SIGCLD',
+ 'SIGSEGV',
+ 'SIGTSTP',
+ 'SIGTTIN',
+ 'SIGTTOU',
+ 'SIGTERM',
+ ]
for name in mock_signal_names:
setattr(mock_signal_module, name, object())
scaffold.mock(
- "signal",
- mock_obj=mock_signal_module,
- tracker=self.mock_tracker)
+ "signal",
+ mock_obj=mock_signal_module,
+ tracker=self.mock_tracker)
scaffold.mock(
- "daemon.daemon.signal",
- mock_obj=mock_signal_module,
- tracker=self.mock_tracker)
+ "daemon.daemon.signal",
+ mock_obj=mock_signal_module,
+ tracker=self.mock_tracker)
default_signal_map_by_name = {
- 'SIGTSTP': None,
- 'SIGTTIN': None,
- 'SIGTTOU': None,
- 'SIGTERM': 'terminate',
- }
+ 'SIGTSTP': None,
+ 'SIGTTIN': None,
+ 'SIGTTOU': None,
+ 'SIGTERM': 'terminate',
+ }
self.default_signal_map = dict(
- (getattr(signal, name), target)
- for (name, target) in default_signal_map_by_name.items())
+ (getattr(signal, name), target)
+ for (name, target) in default_signal_map_by_name.items())
def tearDown(self):
""" Tear down test fixtures. """
@@ -1888,14 +1897,14 @@ class set_signal_handlers_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "signal.signal",
- tracker=self.mock_tracker)
+ "signal.signal",
+ tracker=self.mock_tracker)
self.signal_handler_map = {
- signal.SIGQUIT: object(),
- signal.SIGSEGV: object(),
- signal.SIGINT: object(),
- }
+ signal.SIGQUIT: object(),
+ signal.SIGSEGV: object(),
+ signal.SIGINT: object(),
+ }
def tearDown(self):
""" Tear down test fixtures. """
@@ -1905,9 +1914,9 @@ class set_signal_handlers_TestCase(scaffold.TestCase):
""" Should set signal handler for each item in map. """
signal_handler_map = self.signal_handler_map
expect_mock_output = "".join(
- "Called signal.signal(%(signal_number)r, %(handler)r)\n"
- % vars()
- for (signal_number, handler) in signal_handler_map.items())
+ "Called signal.signal(%(signal_number)r, %(handler)r)\n"
+ % vars()
+ for (signal_number, handler) in signal_handler_map.items())
daemon.daemon.set_signal_handlers(signal_handler_map)
self.failUnlessMockCheckerMatch(expect_mock_output)
@@ -1920,8 +1929,8 @@ class register_atexit_function_TestCase(scaffold.TestCase):
self.mock_tracker = scaffold.MockTracker()
scaffold.mock(
- "atexit.register",
- tracker=self.mock_tracker)
+ "atexit.register",
+ tracker=self.mock_tracker)
def tearDown(self):
""" Tear down test fixtures. """
@@ -1931,7 +1940,14 @@ class register_atexit_function_TestCase(scaffold.TestCase):
""" Should register specified function for atexit processing. """
func = object()
expect_mock_output = """\
- Called atexit.register(%(func)r)
- """ % vars()
+ Called atexit.register(%(func)r)
+ """ % vars()
daemon.daemon.register_atexit_function(func)
self.failUnlessMockCheckerMatch(expect_mock_output)
+
+
+# Local variables:
+# coding: utf-8
+# mode: python
+# End:
+# vim: fileencoding=utf-8 filetype=python :