From 658b3784aee7343c1a3725411492d1fa87902e94 Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Wed, 22 Aug 2012 09:44:32 +0100 Subject: [PATCH] Split out warning tests as they are order dependent --- tests/test_all_warnings.py | 74 +++++++++++++++++++++++++++++++++ tests/test_document.py | 84 -------------------------------------- 2 files changed, 74 insertions(+), 84 deletions(-) create mode 100644 tests/test_all_warnings.py diff --git a/tests/test_all_warnings.py b/tests/test_all_warnings.py new file mode 100644 index 00000000..31917263 --- /dev/null +++ b/tests/test_all_warnings.py @@ -0,0 +1,74 @@ +import unittest +import warnings + +from mongoengine import * +from mongoengine.tests import query_counter + + +class TestWarnings(unittest.TestCase): + + def setUp(self): + conn = connect(db='mongoenginetest') + self.warning_list = [] + self.showwarning_default = warnings.showwarning + warnings.showwarning = self.append_to_warning_list + + def append_to_warning_list(self, message, category, *args): + self.warning_list.append({"message": message, + "category": category}) + + def tearDown(self): + # restore default handling of warnings + warnings.showwarning = self.showwarning_default + + def test_allow_inheritance_future_warning(self): + """Add FutureWarning for future allow_inhertiance default change. + """ + + class SimpleBase(Document): + a = IntField() + + class InheritedClass(SimpleBase): + b = IntField() + + InheritedClass() + self.assertEqual(len(self.warning_list), 1) + warning = self.warning_list[0] + self.assertEqual(FutureWarning, warning["category"]) + self.assertTrue("InheritedClass" in str(warning["message"])) + + def test_document_save_cascade_future_warning(self): + + class Person(Document): + name = StringField() + parent = ReferenceField('self') + + Person.drop_collection() + + p1 = Person(name="Wilson Snr") + p1.parent = None + p1.save() + + p2 = Person(name="Wilson Jr") + p2.parent = p1 + p2.parent.name = "Poppa Wilson" + p2.save() + + self.assertEqual(len(self.warning_list), 1) + warning = self.warning_list[0] + self.assertEqual(FutureWarning, warning["category"]) + self.assertTrue("Cascading saves will default to off in 0.8" + in str(warning["message"])) + + def test_document_collection_syntax_warning(self): + + class NonAbstractBase(Document): + pass + + class InheritedDocumentFailTest(NonAbstractBase): + meta = {'collection': 'fail'} + + warning = self.warning_list[0] + self.assertEqual(SyntaxWarning, warning["category"]) + self.assertEqual('non_abstract_base', + InheritedDocumentFailTest._get_collection_name()) diff --git a/tests/test_document.py b/tests/test_document.py index b8e3a775..9e870a0d 100644 --- a/tests/test_document.py +++ b/tests/test_document.py @@ -37,34 +37,6 @@ class DocumentTest(unittest.TestCase): def tearDown(self): self.Person.drop_collection() - def test_future_warning(self): - """Add FutureWarning for future allow_inhertiance default change. - """ - - self.warning_list = [] - showwarning_default = warnings.showwarning - - def append_to_warning_list(message,category, *args): - self.warning_list.append({"message":message, "category":category}) - - # add warnings to self.warning_list instead of stderr - warnings.showwarning = append_to_warning_list - - class SimpleBase(Document): - a = IntField() - - class InheritedClass(SimpleBase): - b = IntField() - - # restore default handling of warnings - warnings.showwarning = showwarning_default - - InheritedClass() - self.assertEqual(len(self.warning_list), 1) - warning = self.warning_list[0] - self.assertEqual(FutureWarning, warning["category"]) - self.assertTrue("InheritedClass" in str(warning["message"])) - def test_drop_collection(self): """Ensure that the collection may be dropped from the database. """ @@ -144,28 +116,6 @@ class DocumentTest(unittest.TestCase): meta = {'collection': 'wibble'} self.assertEqual('wibble', InheritedAbstractNamingTest._get_collection_name()) - # set up for redirecting warnings - self.warning_list = [] - showwarning_default = warnings.showwarning - - def append_to_warning_list(message, category, *args): - self.warning_list.append({'message':message, 'category':category}) - - # add warnings to self.warning_list instead of stderr - warnings.showwarning = append_to_warning_list - warnings.simplefilter("always") - - class NonAbstractBase(Document): - pass - - class InheritedDocumentFailTest(NonAbstractBase): - meta = {'collection': 'fail'} - - # restore default handling of warnings - warnings.showwarning = showwarning_default - - self.assertTrue(issubclass(self.warning_list[0]["category"], SyntaxWarning)) - self.assertEqual('non_abstract_base', InheritedDocumentFailTest._get_collection_name()) # Mixin tests class BaseMixin(object): @@ -1508,40 +1458,6 @@ class DocumentTest(unittest.TestCase): p1.reload() self.assertEqual(p1.name, p.parent.name) - def test_cascade_warning(self): - - self.warning_list = [] - showwarning_default = warnings.showwarning - - def append_to_warning_list(message, category, *args): - self.warning_list.append({"message": message, - "category": category}) - - # add warnings to self.warning_list instead of stderr - warnings.showwarning = append_to_warning_list - - class Person(Document): - name = StringField() - parent = ReferenceField('self') - - Person.drop_collection() - - p1 = Person(name="Wilson Snr") - p1.parent = None - p1.save() - - p2 = Person(name="Wilson Jr") - p2.parent = p1 - p2.save() - - # restore default handling of warnings - warnings.showwarning = showwarning_default - self.assertEqual(len(self.warning_list), 1) - warning = self.warning_list[0] - self.assertEqual(FutureWarning, warning["category"]) - self.assertTrue("Cascading saves will default to off in 0.8" - in str(warning["message"])) - def test_save_cascade_kwargs(self): class Person(Document):