From f9e58cad3bca4bd141ceb5ab4846c2258279ae34 Mon Sep 17 00:00:00 2001 From: Taavi Burns Date: Wed, 16 Mar 2011 00:32:33 -0400 Subject: [PATCH] Fix 3 errors in py32, from patch from lsblakk. There are still 8 failures. See #2088. --- lib/sqlalchemy/util/compat.py | 1 + test/ext/test_declarative.py | 8 +++++--- test/orm/test_mapper.py | 6 +++++- test/sql/test_compiler.py | 17 ++++++++++++++++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py index 5aea70f242..0fb0045008 100644 --- a/lib/sqlalchemy/util/compat.py +++ b/lib/sqlalchemy/util/compat.py @@ -17,6 +17,7 @@ try: except ImportError: import dummy_threading as threading +py32 = sys.version_info >= (3, 2) py3k = getattr(sys, 'py3kwarning', False) or sys.version_info >= (3, 0) jython = sys.platform.startswith('java') pypy = hasattr(sys, 'pypy_version_info') diff --git a/test/ext/test_declarative.py b/test/ext/test_declarative.py index 50b8fe8519..91055911c6 100644 --- a/test/ext/test_declarative.py +++ b/test/ext/test_declarative.py @@ -419,11 +419,13 @@ class DeclarativeTest(DeclarativeTestBase): __tablename__ = 'users' id = Column('id', Integer, primary_key=True) - addresses = relationship('Addresss') + addresses = relationship('Address') # hasattr() on a compile-loaded attribute - - hasattr(User.addresses, 'property') + try: + hasattr(User.addresses, 'property') + except exc.InvalidRequestError: + assert sa.util.compat.py32 # the exception is preserved. Remains the # same through repeated calls. diff --git a/test/orm/test_mapper.py b/test/orm/test_mapper.py index abef6ed186..e26097116c 100644 --- a/test/orm/test_mapper.py +++ b/test/orm/test_mapper.py @@ -112,7 +112,11 @@ class MapperTest(_fixtures.FixtureTest): 'user':relationship(User) }) - hasattr(Address.user, 'property') + try: + hasattr(Address.user, 'property') + except sa.orm.exc.UnmappedClassError: + assert util.compat.py32 + for i in range(3): assert_raises_message(sa.exc.InvalidRequestError, "^One or more mappers failed to " diff --git a/test/sql/test_compiler.py b/test/sql/test_compiler.py index b060fef5b0..69765a4fa6 100644 --- a/test/sql/test_compiler.py +++ b/test/sql/test_compiler.py @@ -69,13 +69,28 @@ class SelectTest(TestBase, AssertsCompiledSQL): assert hasattr(table1.select(), 'c') assert not hasattr(table1.c.myid.self_group(), 'columns') assert hasattr(table1.select().self_group(), 'columns') - assert not hasattr(select([table1.c.myid]).as_scalar().self_group(), 'columns') assert not hasattr(table1.c.myid, 'columns') assert not hasattr(table1.c.myid, 'c') assert not hasattr(table1.select().c.myid, 'c') assert not hasattr(table1.select().c.myid, 'columns') assert not hasattr(table1.alias().c.myid, 'columns') assert not hasattr(table1.alias().c.myid, 'c') + if util.compat.py32: + assert_raises_message( + exc.InvalidRequestError, + 'Scalar Select expression has no ' + 'columns; use this object directly within a ' + 'column-level expression.', + lambda: hasattr(select([table1.c.myid]).as_scalar().self_group(), 'columns')) + assert_raises_message( + exc.InvalidRequestError, + 'Scalar Select expression has no ' + 'columns; use this object directly within a ' + 'column-level expression.', + lambda: hasattr(select([table1.c.myid]).as_scalar(), 'columns')) + else: + assert not hasattr(select([table1.c.myid]).as_scalar().self_group(), 'columns') + assert not hasattr(select([table1.c.myid]).as_scalar(), 'columns') def test_table_select(self): self.assert_compile(table1.select(), -- 2.47.2