From 77eccd3033dc62ac19d1d5b3485e9bf87e349d37 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Sun, 9 Oct 2022 20:15:23 -0600 Subject: [PATCH] add test for un-startable script --- evennia/utils/tests/test_containers.py | 96 +++++++++++++++----------- 1 file changed, 54 insertions(+), 42 deletions(-) diff --git a/evennia/utils/tests/test_containers.py b/evennia/utils/tests/test_containers.py index 6589d98ea2..4352a67eb6 100644 --- a/evennia/utils/tests/test_containers.py +++ b/evennia/utils/tests/test_containers.py @@ -11,64 +11,76 @@ _BASE_TYPECLASS = class_from_module(settings.BASE_SCRIPT_TYPECLASS) class GoodScript(DefaultScript): pass +class InvalidScript: + pass + class BrokenScript(DefaultScript): - """objects will fail upon call""" - @property - def objects(self): - from evennia import module_that_doesnt_exist + """objects will fail upon call""" + @property + def objects(self): + from evennia import module_that_doesnt_exist class TestGlobalScriptContainer(unittest.TestCase): - def test_init_with_no_scripts(self): - gsc = containers.GlobalScriptContainer() + def test_init_with_no_scripts(self): + gsc = containers.GlobalScriptContainer() - self.assertEqual(len(gsc.loaded_data), 0) + self.assertEqual(len(gsc.loaded_data), 0) - @override_settings(GLOBAL_SCRIPTS={}) - def test_start_with_no_scripts(self): - gsc = containers.GlobalScriptContainer() + @override_settings(GLOBAL_SCRIPTS={}) + def test_start_with_no_scripts(self): + 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': {}}) - def test_start_with_typeclassless_script(self): - """No specified typeclass should fallback to base""" - gsc = containers.GlobalScriptContainer() + @override_settings(GLOBAL_SCRIPTS={'script_name': {}}) + def test_start_with_typeclassless_script(self): + """No specified typeclass should fallback to base""" + gsc = containers.GlobalScriptContainer() - gsc.start() + gsc.start() - self.assertEqual(len(gsc.typeclass_storage), 1) - self.assertIn('script_name', gsc.typeclass_storage) - self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS) + self.assertEqual(len(gsc.typeclass_storage), 1) + self.assertIn('script_name', gsc.typeclass_storage) + self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS) - @override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.NoScript'}}) - def test_start_with_nonexistent_script(self): - """Missing script class should fall back to base""" - gsc = containers.GlobalScriptContainer() + @override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.NoScript'}}) + def test_start_with_nonexistent_script(self): + """Missing script class should fall back to base""" + gsc = containers.GlobalScriptContainer() - gsc.start() + gsc.start() - self.assertEqual(len(gsc.typeclass_storage), 1) - self.assertIn('script_name', gsc.typeclass_storage) - self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS) + self.assertEqual(len(gsc.typeclass_storage), 1) + self.assertIn('script_name', gsc.typeclass_storage) + self.assertEqual(gsc.typeclass_storage['script_name'], _BASE_TYPECLASS) - @override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.GoodScript'}}) - def test_start_with_valid_script(self): - gsc = containers.GlobalScriptContainer() + @override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.GoodScript'}}) + def test_start_with_valid_script(self): + gsc = containers.GlobalScriptContainer() - gsc.start() + gsc.start() - self.assertEqual(len(gsc.typeclass_storage), 1) - self.assertIn('script_name', gsc.typeclass_storage) - self.assertEqual(gsc.typeclass_storage['script_name'], GoodScript) + self.assertEqual(len(gsc.typeclass_storage), 1) + self.assertIn('script_name', gsc.typeclass_storage) + self.assertEqual(gsc.typeclass_storage['script_name'], GoodScript) - @override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.BrokenScript'}}) - def test_start_with_broken_script(self): - """Broken script module should traceback""" - gsc = containers.GlobalScriptContainer() + @override_settings(GLOBAL_SCRIPTS={'script_name': {'typeclass': 'evennia.utils.tests.test_containers.InvalidScript'}}) + def test_start_with_invalid_script(self): + """Script class doesn't implement required start methods""" + gsc = containers.GlobalScriptContainer() - with self.assertRaises(Exception) as cm: - gsc.start() - self.fail("An exception was expected but it didn't occur.") + with self.assertRaises(Exception) as cm: + gsc.start() + 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.")