Helps to actually add laucher test file

This commit is contained in:
Griatch 2019-02-23 21:13:37 +01:00
parent d77dc93fcf
commit 36da4d3e45

View file

@ -0,0 +1,118 @@
"""
Test the evennia launcher.
"""
import os
import pickle
from anything import Something
from mock import patch, MagicMock
from twisted.internet import reactor
from twisted.trial.unittest import TestCase as TwistedTestCase
from evennia.server import evennia_launcher
from evennia.server.portal import amp
from twisted.internet.base import DelayedCall
DelayedCall.debug = True
@patch("evennia.server.evennia_launcher.Popen", new=MagicMock())
class TestLauncher(TwistedTestCase):
def test_is_windows(self):
self.assertEqual(evennia_launcher._is_windows(), os.name == 'nt')
def test_file_compact(self):
self.assertEqual(evennia_launcher._file_names_compact(
"foo/bar/test1", "foo/bar/test2"),
"foo/bar/test1 and test2")
self.assertEqual(evennia_launcher._file_names_compact(
"foo/test1", "foo/bar/test2"),
"foo/test1 and foo/bar/test2")
@patch("evennia.server.evennia_launcher.print")
def test_print_info(self, mockprint):
portal_dict = {
"servername": "testserver",
"version": "1",
"telnet": 1234,
"telnet_ssl": [1234, 2345],
"ssh": 1234,
"webserver_proxy": 1234,
"webclient": 1234,
"webserver_internal": 1234,
"amp": 1234
}
server_dict = {
"servername": "testserver",
"version": "1",
"webserver": [1234, 1234],
"amp": 1234,
"irc_rss": "irc.test",
"info": "testing mode",
"errors": ""
}
evennia_launcher._print_info(portal_dict, server_dict)
mockprint.assert_called()
def test_parse_status(self):
response = {"status": pickle.dumps(("teststring",))}
result = evennia_launcher._parse_status(response)
self.assertEqual(result, ("teststring",))
@patch("evennia.server.evennia_launcher.os.name", new="posix")
def test_get_twisted_cmdline(self):
pcmd, scmd = evennia_launcher._get_twistd_cmdline(False, False)
self.assertTrue("portal.py" in pcmd[1])
self.assertTrue("--pidfile" in pcmd[2])
self.assertTrue("server.py" in scmd[1])
self.assertTrue("--pidfile" in scmd[2])
pcmd, scmd = evennia_launcher._get_twistd_cmdline(True, True)
self.assertTrue("portal.py" in pcmd[1])
self.assertTrue("--pidfile" in pcmd[2])
self.assertTrue("--profiler=cprofile" in pcmd[4], "actual: {}".format(pcmd))
self.assertTrue("--profile=" in pcmd[5])
self.assertTrue("server.py" in scmd[1])
self.assertTrue("--pidfile" in scmd[2])
self.assertTrue("--pidfile" in scmd[2])
self.assertTrue("--profiler=cprofile" in scmd[4], "actual: {}".format(scmd))
self.assertTrue("--profile=" in scmd[5])
@patch("evennia.server.evennia_launcher.os.name", new="nt")
def test_get_twisted_cmdline_nt(self):
pcmd, scmd = evennia_launcher._get_twistd_cmdline(False, False)
self.assertTrue(len(pcmd) == 2, "actual: {}".format(pcmd))
self.assertTrue(len(scmd) == 2, "actual: {}".format(scmd))
@patch("evennia.server.evennia_launcher.reactor.stop")
def test_reactor_stop(self, mockstop):
evennia_launcher._reactor_stop()
mockstop.assert_called()
def _catch_wire_read(self, mocktransport):
"Parse what was supposed to be sent over the wire"
arg_list = mocktransport.write.call_args_list
all_sent = []
for i, cll in enumerate(arg_list):
args, kwargs = cll
raw_inp = args[0]
all_sent.append(raw_inp)
return all_sent
@patch("evennia.server.portal.amp.amp.BinaryBoxProtocol.transport")
def test_send_instruction_pstatus(self, mocktransport):
deferred = evennia_launcher.send_instruction(
evennia_launcher.PSTATUS,
(),
callback=MagicMock(),
errback=MagicMock())
on_wire = self._catch_wire_read(mocktransport)
self.assertEqual(on_wire, "")
return deferred