]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- test + changelog
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 9 Feb 2015 00:58:34 +0000 (19:58 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 9 Feb 2015 00:58:34 +0000 (19:58 -0500)
doc/build/changelog/changelog_09.rst
lib/sqlalchemy/orm/query.py
test/orm/test_joins.py

index a145ba259f1d3a16999635d344de5cf03e03f0c4..6836a15abd8aa778f31f2f8c4c62723d75990d67 100644 (file)
 .. changelog::
     :version: 0.9.9
 
+    .. change::
+        :tags: bug, orm
+        :pullreq: github:147
+
+        Fixed bug where TypeError raised when :meth:`.Query.join` called
+        with unknown kw arguments would raise its own TypeError due
+        to broken formatting.  Pull request courtesy Malthe Borch.
+
     .. change::
         :tags: bug, engine
         :tickets: 3302
index 3680f47eb713aeac1090bb214d10ec84e71e255c..07f949d8e96300daf92bfec8a6fe7bc9ef83593c 100644 (file)
@@ -1775,7 +1775,7 @@ class Query(object):
             kwargs.pop('isouter', False)
         if kwargs:
             raise TypeError("unknown arguments: %s" %
-                            ','.join(kwargs))
+                            ', '.join(sorted(kwargs)))
         isouter = isouter
         return self._join(props,
                           outerjoin=isouter, create_aliases=aliased,
@@ -1792,7 +1792,7 @@ class Query(object):
             kwargs.pop('from_joinpoint', False)
         if kwargs:
             raise TypeError("unknown arguments: %s" %
-                            ','.join(kwargs))
+                            ', '.join(sorted(kwargs)))
         return self._join(props,
                           outerjoin=True, create_aliases=aliased,
                           from_joinpoint=from_joinpoint)
index c519032b33d8973feb0fb01bd77d312337d587ef..23d220dccb8e1bb76b34a72d7afc234f6fb0ab8e 100644 (file)
@@ -419,6 +419,20 @@ class JoinTest(QueryTest, AssertsCompiledSQL):
             "ON addresses.id = orders.address_id"
         )
 
+    def test_invalid_kwarg_join(self):
+        User = self.classes.User
+        sess = create_session()
+        assert_raises_message(
+            TypeError,
+            "unknown arguments: bar, foob",
+            sess.query(User).join, "address", foob="bar", bar="bat"
+        )
+        assert_raises_message(
+            TypeError,
+            "unknown arguments: bar, foob",
+            sess.query(User).outerjoin, "address", foob="bar", bar="bat"
+        )
+
     def test_left_is_none(self):
         User = self.classes.User
         Address = self.classes.Address