summaryrefslogtreecommitdiff
path: root/test/engine/test_parseconnect.py
diff options
context:
space:
mode:
authorSanjana <sanjana0796@gmail.com>2019-02-28 10:16:13 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2019-02-28 14:34:52 -0500
commit9268c320bf6ea35696951875df518286dd79ad54 (patch)
treeb28587176a5ecd99f7bc1567027f863753f3fcd6 /test/engine/test_parseconnect.py
parentdc48ac54893491c5ecd64a868883a22769376e9a (diff)
downloadsqlalchemy-9268c320bf6ea35696951875df518286dd79ad54.tar.gz
Add port comparison in __eq__() and __ne__() method to URL
Comparing two objects of :class:`.URL` using ``__eq__()`` did not take port number into consideration, two objects differing only by port number were considered equal. Port comparison is now added in ``__eq__()`` method of :class:`.URL`, objects differing by port number are now not equal. Additionally, ``__ne__()`` was not implemented for :class:`.URL` which caused unexpected result when ``!=`` was used in Python2, since there are no implied relationships among the comparison operators in Python2. Fixes: #4406 Closes: #4515 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4515 Pull-request-sha: 0f15b805f07e7fca1f82ca6c3aad98d50ea705b8 Change-Id: Iba7d224f1282dc3f4b884d1a746f2d46669f551e
Diffstat (limited to 'test/engine/test_parseconnect.py')
-rw-r--r--test/engine/test_parseconnect.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/test/engine/test_parseconnect.py b/test/engine/test_parseconnect.py
index be90378c9..b7e890517 100644
--- a/test/engine/test_parseconnect.py
+++ b/test/engine/test_parseconnect.py
@@ -12,6 +12,8 @@ from sqlalchemy.testing import assert_raises
from sqlalchemy.testing import eq_
from sqlalchemy.testing import fixtures
from sqlalchemy.testing import is_
+from sqlalchemy.testing import is_false
+from sqlalchemy.testing import is_true
from sqlalchemy.testing import mock
from sqlalchemy.testing.mock import call
from sqlalchemy.testing.mock import MagicMock
@@ -21,7 +23,7 @@ from sqlalchemy.testing.mock import Mock
dialect = None
-class ParseConnectTest(fixtures.TestBase):
+class URLTest(fixtures.TestBase):
def test_rfc1738(self):
for text in (
"dbtype://username:password@hostspec:110//usr/db_file.db",
@@ -145,6 +147,29 @@ class ParseConnectTest(fixtures.TestBase):
"dialect://user:pass@host/db?arg1=param1&arg2=param2&arg2=param3",
)
+ def test_comparison(self):
+ components = ('drivername', 'username', 'password', 'host',
+ 'database', 'query', 'port')
+
+ common_url = "dbtype://username:password" \
+ "@[2001:da8:2004:1000:202:116:160:90]:80/database?foo=bar"
+ other_url = "dbtype://uname:pwd@host/"
+
+ url1 = url.make_url(common_url)
+ url2 = url.make_url(common_url)
+ url3 = url.make_url(other_url)
+
+ is_true(url1 == url2)
+ is_false(url1 != url2)
+ is_true(url1 != url3)
+ is_false(url1 == url3)
+
+ for curr_component in components:
+ setattr(url2, curr_component, 'new_changed_value')
+ is_true(url1 != url2)
+ is_false(url1 == url2)
+ setattr(url2, curr_component, getattr(url1, curr_component))
+
class DialectImportTest(fixtures.TestBase):
def test_import_base_dialects(self):