Format code with black. Add makefile to run fmt/tests

This commit is contained in:
Griatch 2019-09-28 18:18:11 +02:00
parent d00bce9288
commit c2c7fa311a
299 changed files with 19037 additions and 11611 deletions

View file

@ -17,12 +17,12 @@ from evennia.server import serversession, session
from evennia.utils import create
from twisted.internet.base import DelayedCall
DelayedCall.debug = True
# @patch("evennia.server.initial_setup.get_god_account",
# MagicMock(return_value=create.account("TestAMPAccount", "test@test.com", "testpassword")))
class _TestAMP(TwistedTestCase):
def setUp(self):
super(_TestAMP, self).setUp()
self.account = mommy.make("accounts.AccountDB", id=1)
@ -90,9 +90,9 @@ class TestAMPClientSend(_TestAMP):
def test_adminserver2portal(self, mocktransport):
self._connect_client(mocktransport)
self.amp_client.send_AdminServer2Portal(self.session,
operation=amp.PSYNC,
info_dict={}, spid=None)
self.amp_client.send_AdminServer2Portal(
self.session, operation=amp.PSYNC, info_dict={}, spid=None
)
wire_data = self._catch_wire_read(mocktransport)[0]
self._connect_server(mocktransport)
@ -117,8 +117,7 @@ class TestAMPClientRecv(_TestAMP):
def test_adminportal2server(self, mocktransport):
self._connect_server(mocktransport)
self.amp_server.send_AdminPortal2Server(self.session,
operation=amp.PDISCONNALL)
self.amp_server.send_AdminPortal2Server(self.session, operation=amp.PDISCONNALL)
wire_data = self._catch_wire_read(mocktransport)[0]
self._connect_client(mocktransport)

View file

@ -11,7 +11,6 @@ from evennia.server import initial_setup
class TestInitialSetup(TestCase):
@patch("evennia.server.initial_setup.AccountDB")
def test_get_god_account(self, mocked_accountdb):
mocked_accountdb.objects.get = MagicMock(return_value=1)

View file

@ -13,22 +13,25 @@ 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')
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/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")
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):
@ -41,7 +44,7 @@ class TestLauncher(TwistedTestCase):
"webserver_proxy": 1234,
"webclient": 1234,
"webserver_internal": 1234,
"amp": 1234
"amp": 1234,
}
server_dict = {
"servername": "testserver",
@ -50,7 +53,7 @@ class TestLauncher(TwistedTestCase):
"amp": 1234,
"irc_rss": "irc.test",
"info": "testing mode",
"errors": ""
"errors": "",
}
evennia_launcher._print_info(portal_dict, server_dict)
@ -129,14 +132,14 @@ class TestLauncher(TwistedTestCase):
@patch("evennia.server.evennia_launcher.print")
def test_query_status_run(self, mprint):
evennia_launcher.query_status()
mprint.assert_called_with('Portal: RUNNING (pid 100)\nServer: RUNNING (pid 100)')
mprint.assert_called_with("Portal: RUNNING (pid 100)\nServer: RUNNING (pid 100)")
@patch("evennia.server.evennia_launcher.send_instruction", _msend_status_err)
@patch("evennia.server.evennia_launcher.NO_REACTOR_STOP", True)
@patch("evennia.server.evennia_launcher.print")
def test_query_status_not_run(self, mprint):
evennia_launcher.query_status()
mprint.assert_called_with('Portal: NOT RUNNING\nServer: NOT RUNNING')
mprint.assert_called_with("Portal: NOT RUNNING\nServer: NOT RUNNING")
@patch("evennia.server.evennia_launcher.send_instruction", _msend_status_ok)
@patch("evennia.server.evennia_launcher.NO_REACTOR_STOP", True)
@ -144,7 +147,7 @@ class TestLauncher(TwistedTestCase):
mprint = MagicMock()
def testcall(response):
resp = pickle.loads(response['status'])
resp = pickle.loads(response["status"])
mprint(resp)
evennia_launcher.query_status(callback=testcall)
@ -173,10 +176,8 @@ class TestLauncher(TwistedTestCase):
mcall = MagicMock()
merr = MagicMock()
evennia_launcher.wait_for_status(
portal_running=True,
server_running=True,
callback=mcall,
errback=merr)
portal_running=True, server_running=True, callback=mcall, errback=merr
)
mcall.assert_called_with(True, True)
merr.assert_not_called()
@ -187,10 +188,8 @@ class TestLauncher(TwistedTestCase):
mcall = MagicMock()
merr = MagicMock()
evennia_launcher.wait_for_status(
portal_running=True,
server_running=True,
callback=mcall,
errback=merr)
portal_running=True, server_running=True, callback=mcall, errback=merr
)
mcall.assert_not_called()
merr.assert_not_called()

View file

@ -22,6 +22,7 @@ class MockSettings(object):
Class for simulating django.conf.settings. Created with a single value, and then sets the required
WEBSERVER_ENABLED setting to True or False depending if we're testing WEBSERVER_PORTS.
"""
def __init__(self, setting, value=None):
setattr(self, setting, value)
if setting == "WEBSERVER_PORTS":
@ -34,12 +35,26 @@ class TestDeprecations(TestCase):
"""
Class for testing deprecations.check_errors.
"""
deprecated_settings = (
"CMDSET_DEFAULT", "CMDSET_OOC", "BASE_COMM_TYPECLASS", "COMM_TYPECLASS_PATHS",
"CHARACTER_DEFAULT_HOME", "OBJECT_TYPECLASS_PATHS", "SCRIPT_TYPECLASS_PATHS",
"ACCOUNT_TYPECLASS_PATHS", "CHANNEL_TYPECLASS_PATHS", "SEARCH_MULTIMATCH_SEPARATOR",
"TIME_SEC_PER_MIN", "TIME_MIN_PER_HOUR", "TIME_HOUR_PER_DAY", "TIME_DAY_PER_WEEK",
"TIME_WEEK_PER_MONTH", "TIME_MONTH_PER_YEAR", "GAME_DIRECTORY_LISTING")
"CMDSET_DEFAULT",
"CMDSET_OOC",
"BASE_COMM_TYPECLASS",
"COMM_TYPECLASS_PATHS",
"CHARACTER_DEFAULT_HOME",
"OBJECT_TYPECLASS_PATHS",
"SCRIPT_TYPECLASS_PATHS",
"ACCOUNT_TYPECLASS_PATHS",
"CHANNEL_TYPECLASS_PATHS",
"SEARCH_MULTIMATCH_SEPARATOR",
"TIME_SEC_PER_MIN",
"TIME_MIN_PER_HOUR",
"TIME_HOUR_PER_DAY",
"TIME_DAY_PER_WEEK",
"TIME_WEEK_PER_MONTH",
"TIME_MONTH_PER_YEAR",
"GAME_DIRECTORY_LISTING",
)
def test_check_errors(self):
"""
@ -51,34 +66,32 @@ class TestDeprecations(TestCase):
self.assertRaises(DeprecationWarning, check_errors, MockSettings(setting))
# test check for WEBSERVER_PORTS having correct value
self.assertRaises(
DeprecationWarning,
check_errors, MockSettings("WEBSERVER_PORTS", value=["not a tuple"]))
DeprecationWarning, check_errors, MockSettings("WEBSERVER_PORTS", value=["not a tuple"])
)
class ValidatorTest(EvenniaTest):
def test_validator(self):
# Validator returns None on success and ValidationError on failure.
validator = EvenniaPasswordValidator()
# This password should meet Evennia standards.
self.assertFalse(validator.validate('testpassword', user=self.account))
self.assertFalse(validator.validate("testpassword", user=self.account))
# This password contains illegal characters and should raise an Exception.
from django.core.exceptions import ValidationError
self.assertRaises(ValidationError, validator.validate, '(#)[#]<>', user=self.account)
self.assertRaises(ValidationError, validator.validate, "(#)[#]<>", user=self.account)
class ThrottleTest(EvenniaTest):
"""
Class for testing the connection/IP throttle.
"""
def test_throttle(self):
ips = ('94.100.176.153', '45.56.148.77', '5.196.1.129')
kwargs = {
'limit': 5,
'timeout': 15 * 60
}
ips = ("94.100.176.153", "45.56.148.77", "5.196.1.129")
kwargs = {"limit": 5, "timeout": 15 * 60}
throttle = Throttle(**kwargs)

View file

@ -18,97 +18,110 @@ class TestServer(TestCase):
def setUp(self):
from evennia.server import server
self.server = server
def test__server_maintenance_reset(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=0,
ServerConfig=DEFAULT) as mocks:
mocks['connection'].close = MagicMock()
mocks['ServerConfig'].objects.conf = MagicMock(return_value=456)
with patch.multiple(
"evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=0,
ServerConfig=DEFAULT,
) as mocks:
mocks["connection"].close = MagicMock()
mocks["ServerConfig"].objects.conf = MagicMock(return_value=456)
# flush cache
self.server._server_maintenance()
mocks['ServerConfig'].objects.conf.assert_called_with('runtime', 456)
mocks["ServerConfig"].objects.conf.assert_called_with("runtime", 456)
def test__server_maintenance_flush(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=600 - 1,
ServerConfig=DEFAULT) as mocks:
mocks['connection'].close = MagicMock()
mocks['ServerConfig'].objects.conf = MagicMock(return_value=100)
with patch.multiple(
"evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=600 - 1,
ServerConfig=DEFAULT,
) as mocks:
mocks["connection"].close = MagicMock()
mocks["ServerConfig"].objects.conf = MagicMock(return_value=100)
# flush cache
self.server._server_maintenance()
mocks['_FLUSH_CACHE'].assert_called_with(1000)
mocks["_FLUSH_CACHE"].assert_called_with(1000)
def test__server_maintenance_validate_scripts(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=3600 - 1,
ServerConfig=DEFAULT) as mocks:
mocks['connection'].close = MagicMock()
mocks['ServerConfig'].objects.conf = MagicMock(return_value=100)
with patch.multiple(
"evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=3600 - 1,
ServerConfig=DEFAULT,
) as mocks:
mocks["connection"].close = MagicMock()
mocks["ServerConfig"].objects.conf = MagicMock(return_value=100)
with patch("evennia.server.server.evennia.ScriptDB.objects.validate") as mock:
self.server._server_maintenance()
mocks['_FLUSH_CACHE'].assert_called_with(1000)
mocks["_FLUSH_CACHE"].assert_called_with(1000)
mock.assert_called()
def test__server_maintenance_channel_handler_update(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=3700 - 1,
ServerConfig=DEFAULT) as mocks:
mocks['connection'].close = MagicMock()
mocks['ServerConfig'].objects.conf = MagicMock(return_value=100)
with patch.multiple(
"evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=3700 - 1,
ServerConfig=DEFAULT,
) as mocks:
mocks["connection"].close = MagicMock()
mocks["ServerConfig"].objects.conf = MagicMock(return_value=100)
with patch("evennia.server.server.evennia.CHANNEL_HANDLER.update") as mock:
self.server._server_maintenance()
mock.assert_called()
def test__server_maintenance_close_connection(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=(3600 * 7) - 1,
ServerConfig=DEFAULT) as mocks:
mocks['connection'].close = MagicMock()
mocks['ServerConfig'].objects.conf = MagicMock(return_value=100)
with patch.multiple(
"evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=(3600 * 7) - 1,
ServerConfig=DEFAULT,
) as mocks:
mocks["connection"].close = MagicMock()
mocks["ServerConfig"].objects.conf = MagicMock(return_value=100)
self.server._server_maintenance()
mocks['connection'].close.assert_called()
mocks["connection"].close.assert_called()
def test__server_maintenance_idle_time(self):
with patch.multiple("evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=(3600 * 7) - 1,
SESSIONS=DEFAULT,
_IDLE_TIMEOUT=10,
time=DEFAULT,
ServerConfig=DEFAULT) as mocks:
with patch.multiple(
"evennia.server.server",
LoopingCall=DEFAULT,
Evennia=DEFAULT,
_FLUSH_CACHE=DEFAULT,
connection=DEFAULT,
_IDMAPPER_CACHE_MAXSIZE=1000,
_MAINTENANCE_COUNT=(3600 * 7) - 1,
SESSIONS=DEFAULT,
_IDLE_TIMEOUT=10,
time=DEFAULT,
ServerConfig=DEFAULT,
) as mocks:
sess1 = MagicMock()
sess2 = MagicMock()
sess3 = MagicMock()
@ -123,9 +136,9 @@ class TestServer(TestCase):
sess3.account = MagicMock()
sess4.account.access = MagicMock(return_value=False)
mocks['time'].time = MagicMock(return_value=1000)
mocks["time"].time = MagicMock(return_value=1000)
mocks['ServerConfig'].objects.conf = MagicMock(return_value=100)
mocks["ServerConfig"].objects.conf = MagicMock(return_value=100)
mocks["SESSIONS"].values = MagicMock(return_value=[sess1, sess2, sess3, sess4])
mocks["SESSIONS"].disconnect = MagicMock()
@ -135,11 +148,9 @@ class TestServer(TestCase):
mocks["SESSIONS"].disconnect.assert_has_calls(calls, any_order=True)
def test_evennia_start(self):
with patch.multiple("evennia.server.server",
time=DEFAULT,
service=DEFAULT) as mocks:
with patch.multiple("evennia.server.server", time=DEFAULT, service=DEFAULT) as mocks:
mocks['time'].time = MagicMock(return_value=1000)
mocks["time"].time = MagicMock(return_value=1000)
evennia = self.server.Evennia(MagicMock())
self.assertEqual(evennia.start_time, 1000)
@ -148,45 +159,49 @@ class TestServer(TestCase):
@patch("evennia.server.server.ScriptDB")
@patch("evennia.comms.models.ChannelDB")
def test_update_defaults(self, mockchan, mockscript, mockacct, mockobj):
with patch.multiple("evennia.server.server",
ServerConfig=DEFAULT) as mocks:
with patch.multiple("evennia.server.server", ServerConfig=DEFAULT) as mocks:
mockchan.objects.filter = MagicMock()
mockscript.objects.filter = MagicMock()
mockacct.objects.filter = MagicMock()
mockobj.objects.filter = MagicMock()
mockchan.objects.filter = MagicMock()
mockscript.objects.filter = MagicMock()
mockacct.objects.filter = MagicMock()
mockobj.objects.filter = MagicMock()
# fake mismatches
settings_names = ("CMDSET_CHARACTER", "CMDSET_ACCOUNT",
"BASE_ACCOUNT_TYPECLASS", "BASE_OBJECT_TYPECLASS",
"BASE_CHARACTER_TYPECLASS", "BASE_ROOM_TYPECLASS",
"BASE_EXIT_TYPECLASS", "BASE_SCRIPT_TYPECLASS",
"BASE_CHANNEL_TYPECLASS")
fakes = {name: "Dummy.path" for name in settings_names}
# fake mismatches
settings_names = (
"CMDSET_CHARACTER",
"CMDSET_ACCOUNT",
"BASE_ACCOUNT_TYPECLASS",
"BASE_OBJECT_TYPECLASS",
"BASE_CHARACTER_TYPECLASS",
"BASE_ROOM_TYPECLASS",
"BASE_EXIT_TYPECLASS",
"BASE_SCRIPT_TYPECLASS",
"BASE_CHANNEL_TYPECLASS",
)
fakes = {name: "Dummy.path" for name in settings_names}
def _mock_conf(key, *args):
return fakes[key]
def _mock_conf(key, *args):
return fakes[key]
mocks['ServerConfig'].objects.conf = _mock_conf
mocks["ServerConfig"].objects.conf = _mock_conf
evennia = self.server.Evennia(MagicMock())
evennia.update_defaults()
evennia = self.server.Evennia(MagicMock())
evennia.update_defaults()
mockchan.objects.filter.assert_called()
mockscript.objects.filter.assert_called()
mockacct.objects.filter.assert_called()
mockobj.objects.filter.assert_called()
mockchan.objects.filter.assert_called()
mockscript.objects.filter.assert_called()
mockacct.objects.filter.assert_called()
mockobj.objects.filter.assert_called()
def test_initial_setup(self):
from evennia.utils.create import create_account
acct = create_account("TestSuperuser", "test@test.com", "testpassword",
is_superuser=True)
acct = create_account("TestSuperuser", "test@test.com", "testpassword", is_superuser=True)
with patch.multiple("evennia.server.initial_setup",
reset_server=DEFAULT,
AccountDB=DEFAULT) as mocks:
mocks['AccountDB'].objects.get = MagicMock(return_value=acct)
with patch.multiple(
"evennia.server.initial_setup", reset_server=DEFAULT, AccountDB=DEFAULT
) as mocks:
mocks["AccountDB"].objects.get = MagicMock(return_value=acct)
evennia = self.server.Evennia(MagicMock())
evennia.run_initial_setup()
acct.delete()
@ -194,16 +209,17 @@ class TestServer(TestCase):
def test_initial_setup_retry(self):
from evennia.utils.create import create_account
acct = create_account("TestSuperuser2", "test@test.com", "testpassword",
is_superuser=True)
acct = create_account("TestSuperuser2", "test@test.com", "testpassword", is_superuser=True)
with patch.multiple("evennia.server.initial_setup",
ServerConfig=DEFAULT,
reset_server=DEFAULT,
AccountDB=DEFAULT) as mocks:
mocks['AccountDB'].objects.get = MagicMock(return_value=acct)
with patch.multiple(
"evennia.server.initial_setup",
ServerConfig=DEFAULT,
reset_server=DEFAULT,
AccountDB=DEFAULT,
) as mocks:
mocks["AccountDB"].objects.get = MagicMock(return_value=acct)
# a last_initial_setup_step > 0
mocks['ServerConfig'].objects.conf = MagicMock(return_value=4)
mocks["ServerConfig"].objects.conf = MagicMock(return_value=4)
evennia = self.server.Evennia(MagicMock())
evennia.run_initial_setup()
acct.delete()
@ -211,6 +227,7 @@ class TestServer(TestCase):
@override_settings(DEFAULT_HOME="#1")
def test_run_init_hooks(self):
from evennia.utils import create
obj1 = create.object(key="HookTestObj1")
obj2 = create.object(key="HookTestObj2")
acct1 = create.account("HookAcct1", "hooktest1@test.com", "testpasswd")
@ -224,9 +241,9 @@ class TestServer(TestCase):
mockobj.objects.clear_all_sessids = MagicMock()
evennia = self.server.Evennia(MagicMock())
evennia.run_init_hooks('reload')
evennia.run_init_hooks('reset')
evennia.run_init_hooks('shutdown')
evennia.run_init_hooks("reload")
evennia.run_init_hooks("reset")
evennia.run_init_hooks("shutdown")
mockacct.get_all_cached_instances.assert_called()
mockobj.get_all_cached_instances.assert_called()
@ -236,7 +253,7 @@ class TestServer(TestCase):
acct1.delete()
acct2.delete()
@patch('evennia.server.server.INFO_DICT', {"test": "foo"})
@patch("evennia.server.server.INFO_DICT", {"test": "foo"})
def test_get_info_dict(self):
evennia = self.server.Evennia(MagicMock())
self.assertEqual(evennia.get_info_dict(), {"test": "foo"})

View file

@ -22,6 +22,8 @@ class EvenniaTestSuiteRunner(DiscoverRunner):
If not given, a subset of settings.INSTALLED_APPS will be used.
"""
import evennia
evennia._init()
return super(EvenniaTestSuiteRunner, self).build_suite(
test_labels, extra_tests=extra_tests, **kwargs)
test_labels, extra_tests=extra_tests, **kwargs
)