add test for un-startable script
This commit is contained in:
parent
2e9971dc82
commit
77eccd3033
1 changed files with 54 additions and 42 deletions
|
|
@ -11,64 +11,76 @@ _BASE_TYPECLASS = class_from_module(settings.BASE_SCRIPT_TYPECLASS)
|
||||||
class GoodScript(DefaultScript):
|
class GoodScript(DefaultScript):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class InvalidScript:
|
||||||
|
pass
|
||||||
|
|
||||||
class BrokenScript(DefaultScript):
|
class BrokenScript(DefaultScript):
|
||||||
"""objects will fail upon call"""
|
"""objects will fail upon call"""
|
||||||
@property
|
@property
|
||||||
def objects(self):
|
def objects(self):
|
||||||
from evennia import module_that_doesnt_exist
|
from evennia import module_that_doesnt_exist
|
||||||
|
|
||||||
class TestGlobalScriptContainer(unittest.TestCase):
|
class TestGlobalScriptContainer(unittest.TestCase):
|
||||||
|
|
||||||
def test_init_with_no_scripts(self):
|
def test_init_with_no_scripts(self):
|
||||||
gsc = containers.GlobalScriptContainer()
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
self.assertEqual(len(gsc.loaded_data), 0)
|
self.assertEqual(len(gsc.loaded_data), 0)
|
||||||
|
|
||||||
@override_settings(GLOBAL_SCRIPTS={})
|
@override_settings(GLOBAL_SCRIPTS={})
|
||||||
def test_start_with_no_scripts(self):
|
def test_start_with_no_scripts(self):
|
||||||
gsc = containers.GlobalScriptContainer()
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
gsc.start()
|
gsc.start()
|
||||||
|
|
||||||
self.assertEqual(len(gsc.typeclass_storage), 0)
|
self.assertEqual(len(gsc.typeclass_storage), 0)
|
||||||
|
|
||||||
@override_settings(GLOBAL_SCRIPTS={'script_name': {}})
|
@override_settings(GLOBAL_SCRIPTS={'script_name': {}})
|
||||||
def test_start_with_typeclassless_script(self):
|
def test_start_with_typeclassless_script(self):
|
||||||
"""No specified typeclass should fallback to base"""
|
"""No specified typeclass should fallback to base"""
|
||||||
gsc = containers.GlobalScriptContainer()
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
gsc.start()
|
gsc.start()
|
||||||
|
|
||||||
self.assertEqual(len(gsc.typeclass_storage), 1)
|
self.assertEqual(len(gsc.typeclass_storage), 1)
|
||||||
self.assertIn('script_name', gsc.typeclass_storage)
|
self.assertIn('script_name', gsc.typeclass_storage)
|
||||||
self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS)
|
self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS)
|
||||||
|
|
||||||
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.NoScript'}})
|
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.NoScript'}})
|
||||||
def test_start_with_nonexistent_script(self):
|
def test_start_with_nonexistent_script(self):
|
||||||
"""Missing script class should fall back to base"""
|
"""Missing script class should fall back to base"""
|
||||||
gsc = containers.GlobalScriptContainer()
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
gsc.start()
|
gsc.start()
|
||||||
|
|
||||||
self.assertEqual(len(gsc.typeclass_storage), 1)
|
self.assertEqual(len(gsc.typeclass_storage), 1)
|
||||||
self.assertIn('script_name', gsc.typeclass_storage)
|
self.assertIn('script_name', gsc.typeclass_storage)
|
||||||
self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS)
|
self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS)
|
||||||
|
|
||||||
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.GoodScript'}})
|
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.GoodScript'}})
|
||||||
def test_start_with_valid_script(self):
|
def test_start_with_valid_script(self):
|
||||||
gsc = containers.GlobalScriptContainer()
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
gsc.start()
|
gsc.start()
|
||||||
|
|
||||||
self.assertEqual(len(gsc.typeclass_storage), 1)
|
self.assertEqual(len(gsc.typeclass_storage), 1)
|
||||||
self.assertIn('script_name', gsc.typeclass_storage)
|
self.assertIn('script_name', gsc.typeclass_storage)
|
||||||
self.assertEqual(gsc.typeclass_storage['script_name'], GoodScript)
|
self.assertEqual(gsc.typeclass_storage['script_name'], GoodScript)
|
||||||
|
|
||||||
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.BrokenScript'}})
|
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.InvalidScript'}})
|
||||||
def test_start_with_broken_script(self):
|
def test_start_with_invalid_script(self):
|
||||||
"""Broken script module should traceback"""
|
"""Script class doesn't implement required start methods"""
|
||||||
gsc = containers.GlobalScriptContainer()
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
with self.assertRaises(Exception) as cm:
|
with self.assertRaises(Exception) as cm:
|
||||||
gsc.start()
|
gsc.start()
|
||||||
self.fail("An exception was expected but it didn't occur.")
|
self.fail("An exception was expected but it didn't occur.")
|
||||||
|
|
||||||
|
@override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.BrokenScript'}})
|
||||||
|
def test_start_with_broken_script(self):
|
||||||
|
"""Un-importable script should traceback"""
|
||||||
|
gsc = containers.GlobalScriptContainer()
|
||||||
|
|
||||||
|
with self.assertRaises(Exception) as cm:
|
||||||
|
gsc.start()
|
||||||
|
self.fail("An exception was expected but it didn't occur.")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue