]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- added an extremely rudimental set of python 2.3 compatible tests. these rel_0_4_7p1
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 31 Jul 2008 15:02:40 +0000 (15:02 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 31 Jul 2008 15:02:40 +0000 (15:02 +0000)
can at least confirm that we're even on the grid python 2.3-wise.
- fixed usage of native set(), generator expressions
- will release 0.4.7p1

CHANGES
VERSION
lib/sqlalchemy/orm/properties.py
test/py23/__init__.py [new file with mode: 0644]
test/py23/alltests.py [new file with mode: 0644]
test/py23/test_orm.py [new file with mode: 0644]
test/py23/test_sql.py [new file with mode: 0644]

diff --git a/CHANGES b/CHANGES
index d62f2c0f839e74e7c6cccfeaf07cefedc1129e0f..e31a4ba38c67ee2f0c52ac6af7566ad4c3dd1236 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,7 +1,7 @@
 =======
 CHANGES
 =======
-0.4.8
+0.4.7p1
 =====
 - orm 
     - Added "add()" and "add_all()" to scoped_session
@@ -13,7 +13,10 @@ CHANGES
             ScopedSession, "add", instrument("add"))
         setattr(
             ScopedSession, "add_all", instrument("add_all"))
-        
+
+    - Fixed non-2.3 compatible usage of set() and generator
+      expression within relation().
+
 0.4.7
 =====
 - orm
diff --git a/VERSION b/VERSION
index cb498ab2c89f41f36e3c6ae234c4e0e844e49e23..82ddaf8b115f7742c92d054016336d05683848a1 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.4.8
+0.4.7p1
index c0fea3370460929ef0ff86e34326bc0250b32674..c8e40386387d39e3376e76fc6445ca5fe479527d 100644 (file)
@@ -551,7 +551,7 @@ class PropertyLoader(StrategizedProperty):
         if self._legacy_foreignkey and not self._refers_to_parent_table():
             self.foreign_keys = self._legacy_foreignkey
 
-        arg_foreign_keys = set(expression._literal_as_column(x) for x in util.to_set(self.foreign_keys))
+        arg_foreign_keys = util.Set([expression._literal_as_column(x) for x in util.to_set(self.foreign_keys)])
 
         if self._arg_local_remote_pairs:
             if not arg_foreign_keys:
@@ -613,7 +613,7 @@ class PropertyLoader(StrategizedProperty):
             else:
                 eq_pairs = self._arg_local_remote_pairs
         elif self.remote_side:
-            remote_side = set(expression._literal_as_column(x) for x in util.to_set(self.remote_side))
+            remote_side = util.Set([expression._literal_as_column(x) for x in util.to_set(self.remote_side)])
             
             if self.direction is MANYTOONE:
                 eq_pairs = criterion_as_pairs(self.primaryjoin, consider_as_referenced_keys=remote_side, any_operator=True)
diff --git a/test/py23/__init__.py b/test/py23/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test/py23/alltests.py b/test/py23/alltests.py
new file mode 100644 (file)
index 0000000..733b590
--- /dev/null
@@ -0,0 +1,19 @@
+import unittest
+
+
+def suite():
+    modules_to_test = (
+        'py23.test_sql',
+        'py23.test_orm',
+        )
+    alltests = unittest.TestSuite()
+    for name in modules_to_test:
+        mod = __import__(name)
+        for token in name.split('.')[1:]:
+            mod = getattr(mod, token)
+        alltests.addTest(unittest.findTestCases(mod, suiteClass=None))
+    return alltests
+
+if __name__ == '__main__':
+    runner = unittest.TextTestRunner()
+    runner.run(suite())
diff --git a/test/py23/test_orm.py b/test/py23/test_orm.py
new file mode 100644 (file)
index 0000000..cc5dbec
--- /dev/null
@@ -0,0 +1,59 @@
+import unittest
+from sqlalchemy import *
+from sqlalchemy.orm import *
+
+class ORMTest(unittest.TestCase):
+    def setUp(self):
+        global engine, users, addresses
+        engine = create_engine('sqlite://')
+        meta = MetaData(engine)
+        users = Table('users', meta,
+              Column('id', Integer, primary_key=True),
+              Column('name', String(255))
+        )
+        addresses = Table('addresses', meta,
+              Column('id', Integer, primary_key=True),
+              Column('email', String(255)),
+              Column('user_id', Integer, ForeignKey('users.id'))
+        )
+
+        meta.create_all()
+
+    def tearDown(self):
+        engine.dispose()
+
+    def test_orm_roundtrip(self):
+        class User(object):
+            def __init__(self, name):
+                self.name = name
+        class Address(object):
+            def __init__(self, email):
+                self.email = email
+
+        mapper(User, users, properties={
+           'addresses':relation(Address, backref='user', cascade="all, delete-orphan")
+        })
+        mapper(Address, addresses)
+
+        sess = sessionmaker()()
+        u1 = User('ed')
+        u2 = User('wendy')
+        u1.addresses.append(Address('ed@ed.com'))
+        u2.addresses.append(Address('wendy@wendy.com'))
+        sess.add_all([u1, u2])
+        sess.commit()
+
+        self.assertEquals(sess.query(User).order_by(User.name).all(), [u1, u2])
+
+       sess.clear()
+        u1 = sess.query(User).get(1)
+        self.assertEquals(u1.name, 'ed')
+        self.assertEquals(u1.addresses[0].email, 'ed@ed.com')
+        sess.delete(u1)
+        sess.commit()
+        self.assertEquals(sess.query(User).count(), 1)
+               
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/test/py23/test_sql.py b/test/py23/test_sql.py
new file mode 100644 (file)
index 0000000..dbf72fe
--- /dev/null
@@ -0,0 +1,36 @@
+import unittest
+from sqlalchemy import *
+
+class SQLTest(unittest.TestCase):
+    def setUp(self):
+        global engine
+        engine = create_engine('sqlite://')
+
+    def tearDown(self):
+        engine.dispose()
+
+    def test_select_roundtrip(self):
+        meta = MetaData(engine)
+        users = Table('users', meta,
+              Column('id', Integer, primary_key=True),
+              Column('name', String(255))
+        )
+        addresses = Table('addresses', meta,
+              Column('id', Integer, primary_key=True),
+              Column('email', String(255)),
+              Column('user_id', Integer, ForeignKey('users.id'))
+        )
+
+        meta.create_all()
+        users.insert().execute(id=1, name='ed')
+        users.insert().execute(id=2, name='wendy')
+        addresses.insert().execute(id=1, user_id=1, email='ed@foo.com')
+        addresses.insert().execute(id=2, user_id=2, email='wendy@foo.com')
+        self.assertEquals(users.join(addresses).select().execute().fetchall(), 
+           [(1, 'ed', 1, 'ed@foo.com', 1), (2, 'wendy', 2, 'wendy@foo.com', 2)]
+        )
+
+        
+
+if __name__ == '__main__':
+    unittest.main()