Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #13813 -- Comparison of DatabaseWrappers doesn't raise errors.

Patch from Lukasz Balcerzak.
  • Loading branch information...
commit 626fa28878b1167d20d2419d68d561297390510a 1 parent db2727f
Alex Gaynor alex authored
4 django/db/backends/__init__.py
View
@@ -70,7 +70,9 @@ def __init__(self, settings_dict, alias=DEFAULT_DB_ALIAS,
self._thread_ident = thread.get_ident()
def __eq__(self, other):
- return self.alias == other.alias
+ if isinstance(other, BaseDatabaseWrapper):
+ return self.alias == other.alias
+ return NotImplemented
def __ne__(self, other):
return not self == other
0  tests/db_backends/__init__.py
View
No changes.
36 tests/db_backends/tests.py
View
@@ -0,0 +1,36 @@
+from django.test import TestCase
+from django.db.backends import BaseDatabaseWrapper
+
+
+class DummyDatabaseWrapper(BaseDatabaseWrapper):
+ pass
+
+
+class DummyObject(object):
+ alias = None
+
+
+class DbBackendTests(TestCase):
+ def test_compare_db_wrapper_with_another_object(self):
+ wrapper = BaseDatabaseWrapper({})
+ self.assertFalse(wrapper == 'not-a-db-wrapper')
+
+ def test_compare_db_wrapper_with_another_object_with_alias(self):
+ wrapper = BaseDatabaseWrapper({})
+ obj = DummyObject()
+ obj.alias = wrapper.alias = 'foobar'
+ self.assertFalse(wrapper == obj)
+
+ def test_negate_compare_db_wrapper_with_another_object(self):
+ wrapper = BaseDatabaseWrapper({})
+ self.assertTrue(wrapper != 'not-a-db-wrapper')
+
+ def test_compare_db_wrappers(self):
+ wrapper1 = DummyDatabaseWrapper({})
+ wrapper2 = BaseDatabaseWrapper({})
+
+ wrapper1.alias = wrapper2.alias = 'foo'
+ self.assertTrue(wrapper1 == wrapper2)
+
+ wrapper1.alias = 'bar'
+ self.assertFalse(wrapper1 == wrapper2)
Please sign in to comment.
Something went wrong with that request. Please try again.