[Zodb-checkins] CVS: Zope/lib/python/zdaemon/tests - testDaemon.py:1.8

Jim Fulton cvs-admin at zope.org
Fri Nov 28 11:44:59 EST 2003


Update of /cvs-repository/Zope/lib/python/zdaemon/tests
In directory cvs.zope.org:/tmp/cvs-serv3783/lib/python/zdaemon/tests

Added Files:
	testDaemon.py 
Log Message:
Merged Jeremy and Tim's changes from the zodb33-devel-branch.


=== Zope/lib/python/zdaemon/tests/testDaemon.py 1.7 => 1.8 ===
--- /dev/null	Fri Nov 28 11:44:59 2003
+++ Zope/lib/python/zdaemon/tests/testDaemon.py	Fri Nov 28 11:44:58 2003
@@ -0,0 +1,76 @@
+# This file contains unit tests and a simple script that is explicitly
+# invoked by the tests.  The script block goes first so that I don't
+# have to bother getting the imports right.
+
+# The script just kills itself or exits in a variety of ways.
+import os
+import sys
+
+if __name__ == "__main__":
+
+    arg = sys.argv[1]
+    if arg == "signal":
+        import signal
+        os.kill(os.getpid(), signal.SIGKILL)
+    elif arg == "exit":
+        os._exit(2)
+    os._exit(0)
+
+# The rest is unittest stuff that can be run by testrunner.py.
+
+import unittest
+import zdaemon
+import zdaemon.tests
+import zdaemon.Daemon
+import zLOG
+
+class TestDoneError(RuntimeError):
+    pass
+
+def pstamp(message, sev):
+    zLOG.LOG("zdaemon", sev, message)
+    if sev >= zLOG.ERROR:
+        raise TestDoneError(message)
+
+zdaemon.Daemon.pstamp = pstamp
+
+class DaemonTest(unittest.TestCase):
+
+    dir, file = os.path.split(zdaemon.tests.__file__)
+    script = os.path.join(dir, "testDaemon.py")
+
+    def setUp(self):
+        os.environ["Z_DEBUG_MODE"] = ""
+        if os.environ.has_key("ZDAEMON_MANAGED"):
+            del os.environ["ZDAEMON_MANAGED"]
+
+    def tearDown(self):
+        pass
+
+    def run(self, arg):
+        try:
+            zdaemon.Daemon.run((self.script, arg))
+        except SystemExit:
+            pass
+
+    def testDeathBySignal(self):
+        try:
+            self.run("signal")
+        except TestDoneError, msg:
+            self.assert_(str(msg).find("terminated by signal") != -1)
+        else:
+            self.fail("signal was not caught")
+
+    def testDeathByExit(self):
+        try:
+            self.run("exit")
+        except TestDoneError, msg:
+            self.assert_(str(msg).find("exit status") != -1)
+        else:
+            self.fail("exit didn't raise an exception")
+
+def test_suite():
+    if hasattr(os, 'setsid'):
+        return unittest.makeSuite(DaemonTest)
+    else:
+        return None




More information about the Zodb-checkins mailing list