mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 23:38:38 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
101
testing/mozbase/mozprocess/tests/test_process_reader.py
Normal file
101
testing/mozbase/mozprocess/tests/test_process_reader.py
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
import unittest
|
||||
import subprocess
|
||||
import sys
|
||||
from mozprocess.processhandler import ProcessReader, StoreOutput
|
||||
|
||||
|
||||
def run_python(str_code, stdout=subprocess.PIPE, stderr=subprocess.PIPE):
|
||||
cmd = [sys.executable, '-c', str_code]
|
||||
return subprocess.Popen(cmd, stdout=stdout, stderr=stderr)
|
||||
|
||||
|
||||
class TestProcessReader(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.out = StoreOutput()
|
||||
self.err = StoreOutput()
|
||||
self.finished = False
|
||||
|
||||
def on_finished():
|
||||
self.finished = True
|
||||
self.timeout = False
|
||||
|
||||
def on_timeout():
|
||||
self.timeout = True
|
||||
self.reader = ProcessReader(stdout_callback=self.out,
|
||||
stderr_callback=self.err,
|
||||
finished_callback=on_finished,
|
||||
timeout_callback=on_timeout)
|
||||
|
||||
def test_stdout_callback(self):
|
||||
proc = run_python('print 1; print 2')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
|
||||
self.assertEqual(self.out.output, ['1', '2'])
|
||||
self.assertEqual(self.err.output, [])
|
||||
|
||||
def test_stderr_callback(self):
|
||||
proc = run_python('import sys; sys.stderr.write("hello world\\n")')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
|
||||
self.assertEqual(self.out.output, [])
|
||||
self.assertEqual(self.err.output, ['hello world'])
|
||||
|
||||
def test_stdout_and_stderr_callbacks(self):
|
||||
proc = run_python('import sys; sys.stderr.write("hello world\\n"); print 1; print 2')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
|
||||
self.assertEqual(self.out.output, ['1', '2'])
|
||||
self.assertEqual(self.err.output, ['hello world'])
|
||||
|
||||
def test_finished_callback(self):
|
||||
self.assertFalse(self.finished)
|
||||
proc = run_python('')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
self.assertTrue(self.finished)
|
||||
|
||||
def test_timeout(self):
|
||||
self.reader.timeout = 0.05
|
||||
self.assertFalse(self.timeout)
|
||||
proc = run_python('import time; time.sleep(0.1)')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
self.assertTrue(self.timeout)
|
||||
self.assertFalse(self.finished)
|
||||
|
||||
def test_output_timeout(self):
|
||||
self.reader.output_timeout = 0.05
|
||||
self.assertFalse(self.timeout)
|
||||
proc = run_python('import time; time.sleep(0.1)')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
self.assertTrue(self.timeout)
|
||||
self.assertFalse(self.finished)
|
||||
|
||||
def test_read_without_eol(self):
|
||||
proc = run_python('import sys; sys.stdout.write("1")')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
self.assertEqual(self.out.output, ['1'])
|
||||
|
||||
def test_read_with_strange_eol(self):
|
||||
proc = run_python('import sys; sys.stdout.write("1\\r\\r\\r\\n")')
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
self.assertEqual(self.out.output, ['1'])
|
||||
|
||||
def test_mixed_stdout_stderr(self):
|
||||
proc = run_python('import sys; sys.stderr.write("hello world\\n"); print 1; print 2',
|
||||
stderr=subprocess.STDOUT)
|
||||
self.reader.start(proc)
|
||||
self.reader.thread.join()
|
||||
|
||||
self.assertEqual(sorted(self.out.output), sorted(['1', '2', 'hello world']))
|
||||
self.assertEqual(self.err.output, [])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue