tests: initial first_stage_test.
parent
58e30cd117
commit
f1660d5011
@ -0,0 +1,42 @@
|
||||
|
||||
import subprocess
|
||||
import unittest
|
||||
|
||||
import mitogen.master
|
||||
import testlib
|
||||
|
||||
|
||||
class CommandLineTest(testlib.RouterMixin, testlib.TestCase):
|
||||
# Ensure this version of Python produces a command line that is sufficient
|
||||
# to bootstrap this version of Python.
|
||||
#
|
||||
# TODO:
|
||||
# * 2.7 starting 2.4
|
||||
# * 2.7 starting 3.x
|
||||
# * 3.x starting 2.7
|
||||
|
||||
def test_valid_syntax(self):
|
||||
stream = mitogen.master.Stream(self.router, 0)
|
||||
args = stream.get_boot_command()
|
||||
|
||||
# Executing the boot command will print "EC0" and expect to read from
|
||||
# stdin, which will fail because it's pointing at /dev/null, causing
|
||||
# the forked child to crash with an EOFError and disconnect its write
|
||||
# pipe. The forked and freshly execed parent will get a 0-byte read
|
||||
# from the pipe, which is a valid script, and therefore exit indicating
|
||||
# success.
|
||||
|
||||
fp = file("/dev/null", "r")
|
||||
proc = subprocess.Popen(args,
|
||||
stdin=fp,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
stdout, stderr = proc.communicate()
|
||||
self.assertEquals(0, proc.returncode)
|
||||
self.assertEquals("EC0\n", stdout)
|
||||
self.assertContains("EOFError", stderr)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in New Issue