tests: initial first_stage_test.

pull/53/head
David Wilson 7 years ago
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()

@ -111,6 +111,9 @@ class TestCase(unittest.TestCase):
assert 0, '%r raised %r, not %r' % (func, e, exc)
assert 0, '%r did not raise %r' % (func, exc)
def assertContains(self, needle, hay):
assert needle in hay, "%r not found in %r" % (needle, hay)
class DockerizedSshDaemon(object):
def __init__(self):

Loading…
Cancel
Save