summaryrefslogtreecommitdiff
path: root/testing/mozbase/mozprocess/tests/proctest.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/mozbase/mozprocess/tests/proctest.py')
-rw-r--r--testing/mozbase/mozprocess/tests/proctest.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/testing/mozbase/mozprocess/tests/proctest.py b/testing/mozbase/mozprocess/tests/proctest.py
new file mode 100644
index 000000000..62ccf940c
--- /dev/null
+++ b/testing/mozbase/mozprocess/tests/proctest.py
@@ -0,0 +1,52 @@
+import os
+import sys
+import unittest
+import psutil
+
+here = os.path.dirname(os.path.abspath(__file__))
+
+
+class ProcTest(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls.proclaunch = os.path.join(here, "proclaunch.py")
+ cls.python = sys.executable
+
+ def determine_status(self, proc, isalive=False, expectedfail=()):
+ """
+ Use to determine if the situation has failed.
+ Parameters:
+ proc -- the processhandler instance
+ isalive -- Use True to indicate we pass if the process exists; however, by default
+ the test will pass if the process does not exist (isalive == False)
+ expectedfail -- Defaults to [], used to indicate a list of fields
+ that are expected to fail
+ """
+ returncode = proc.proc.returncode
+ didtimeout = proc.didTimeout
+ detected = psutil.pid_exists(proc.pid)
+ output = ''
+ # ProcessHandler has output when store_output is set to True in the constructor
+ # (this is the default)
+ if getattr(proc, 'output'):
+ output = proc.output
+
+ if 'returncode' in expectedfail:
+ self.assertTrue(returncode, "Detected an unexpected return code of: %s" % returncode)
+ elif isalive:
+ self.assertEqual(returncode, None, "Detected not None return code of: %s" % returncode)
+ else:
+ self.assertNotEqual(returncode, None, "Detected unexpected None return code of")
+
+ if 'didtimeout' in expectedfail:
+ self.assertTrue(didtimeout, "Detected that process didn't time out")
+ else:
+ self.assertTrue(not didtimeout, "Detected that process timed out")
+
+ if isalive:
+ self.assertTrue(detected, "Detected process is not running, "
+ "process output: %s" % output)
+ else:
+ self.assertTrue(not detected, "Detected process is still running, "
+ "process output: %s" % output)