Split out warning tests as they are order dependent

This commit is contained in:
Ross Lawley 2012-08-22 09:44:32 +01:00
parent 0526f577ff
commit 658b3784ae
2 changed files with 74 additions and 84 deletions

View File

@ -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())

View File

@ -37,34 +37,6 @@ class DocumentTest(unittest.TestCase):
def tearDown(self): def tearDown(self):
self.Person.drop_collection() 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): def test_drop_collection(self):
"""Ensure that the collection may be dropped from the database. """Ensure that the collection may be dropped from the database.
""" """
@ -144,28 +116,6 @@ class DocumentTest(unittest.TestCase):
meta = {'collection': 'wibble'} meta = {'collection': 'wibble'}
self.assertEqual('wibble', InheritedAbstractNamingTest._get_collection_name()) 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 # Mixin tests
class BaseMixin(object): class BaseMixin(object):
@ -1508,40 +1458,6 @@ class DocumentTest(unittest.TestCase):
p1.reload() p1.reload()
self.assertEqual(p1.name, p.parent.name) 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): def test_save_cascade_kwargs(self):
class Person(Document): class Person(Document):