Revision: 82ab6a77c7eb
Branch:   default
Author:   Janne Piironen <[email protected]>
Date:     Wed Jan 15 13:31:26 2014 UTC
Log: Signalhandler: Made signal handler reset to original after executing tests.

Update issue 1617
Owner: janne.piironen
Status: Started
The original signal handlers are now stored before they are replaced. New method stop() in the custom signal monitor simply restores the original handlers in place. It is called after suite execution in TestSuite.run to stop the custom signal handling.
http://code.google.com/p/robotframework/source/detail?r=82ab6a77c7eb

Modified:
 /src/robot/running/model.py
 /src/robot/running/signalhandler.py
 /utest/running/test_signalhandler.py

=======================================
--- /src/robot/running/model.py Mon Dec 23 12:56:53 2013 UTC
+++ /src/robot/running/model.py Wed Jan 15 13:31:26 2014 UTC
@@ -194,6 +194,7 @@
         output = Output(settings)
         runner = Runner(output, settings)
         self.visit(runner)
+        STOP_SIGNAL_MONITOR.stop()
         output.close(runner.result)
         return runner.result

=======================================
--- /src/robot/running/signalhandler.py Thu Jun  6 14:00:44 2013 UTC
+++ /src/robot/running/signalhandler.py Wed Jan 15 13:31:26 2014 UTC
@@ -32,6 +32,8 @@
     def __init__(self):
         self._signal_count = 0
         self._running_keyword = False
+        self.orig_sigint = None
+        self.orig_sigterm = None

     def __call__(self, signum, frame):
         self._signal_count += 1
@@ -48,9 +50,16 @@

     def start(self):
         if signal:
+            self.orig_sigint = signal.getsignal(signal.SIGINT)
+            self.orig_sigterm = signal.getsignal(signal.SIGTERM)
             for signum in signal.SIGINT, signal.SIGTERM:
                 self._register_signal_handler(signum)

+    def stop(self):
+        if signal:
+            signal.signal(signal.SIGINT, self.orig_sigint)
+            signal.signal(signal.SIGTERM, self.orig_sigterm)
+
     def _register_signal_handler(self, signum):
         try:
             signal.signal(signum, self)
=======================================
--- /utest/running/test_signalhandler.py        Wed Nov 30 15:38:25 2011 UTC
+++ /utest/running/test_signalhandler.py        Wed Jan 15 13:31:26 2014 UTC
@@ -58,6 +58,15 @@
         t.join()
         assert_equal(len(self.logger.messages), 0)

+    def test_signal_handler_restore(self):
+        orig_sigint = signal.getsignal(signal.SIGINT)
+        orig_sigterm = signal.getsignal(signal.SIGTERM)
+        signal_monitor = _StopSignalMonitor()
+        signal_monitor.start()
+        signal_monitor.stop()
+        assert_equal(orig_sigint, signal.getsignal(signal.SIGINT))
+        assert_equal(orig_sigterm, signal.getsignal(signal.SIGTERM))
+
     if sys.platform.startswith('java'):

# signal.signal may raise IllegalArgumentException with Jython 2.5.2:

--

--- You received this message because you are subscribed to the Google Groups "robotframework-commit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to