Split out warning tests as they are order dependent
This commit is contained in:
parent
0526f577ff
commit
658b3784ae
74
tests/test_all_warnings.py
Normal file
74
tests/test_all_warnings.py
Normal 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())
|
@ -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):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user