From: Mike Bayer Date: Mon, 9 Feb 2015 00:58:34 +0000 (-0500) Subject: - test + changelog X-Git-Tag: rel_0_9_9~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=425f0e91c477625b760fdc3e388f00e8406bae15;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - test + changelog (cherry picked from commit 7b9134be7129346e486a5caca7bdc87de7ccf015) Conflicts: lib/sqlalchemy/orm/query.py --- diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst index a145ba259f..6836a15abd 100644 --- a/doc/build/changelog/changelog_09.rst +++ b/doc/build/changelog/changelog_09.rst @@ -14,6 +14,14 @@ .. 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 diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 72dd9db2bf..bbf96318c0 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1717,7 +1717,8 @@ class Query(object): aliased, from_joinpoint = kwargs.pop('aliased', False),\ kwargs.pop('from_joinpoint', False) if kwargs: - raise TypeError("unknown arguments: %s" % ', '.join(kwargs)) + raise TypeError("unknown arguments: %s" % + ', '.join(sorted(kwargs))) return self._join(props, outerjoin=False, create_aliases=aliased, from_joinpoint=from_joinpoint) @@ -1733,7 +1734,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) diff --git a/test/orm/test_joins.py b/test/orm/test_joins.py index 40bc01b5d6..1d3fcf8a99 100644 --- a/test/orm/test_joins.py +++ b/test/orm/test_joins.py @@ -396,6 +396,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