From 058930d42b99f5d9cc38fd96021b9addb78b9cc2 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Wed, 3 Dec 2014 20:42:54 +0100 Subject: [PATCH 1/4] test for compileapp --- gluon/tests/test_utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gluon/tests/test_utils.py b/gluon/tests/test_utils.py index 3372a73d..ba244ed1 100644 --- a/gluon/tests/test_utils.py +++ b/gluon/tests/test_utils.py @@ -20,5 +20,17 @@ class TestUtils(unittest.TestCase): data = md5_hash("web2py rocks") self.assertEqual(data, '79509f3246a2824dee64635303e99204') +class TestPack(unittest.TestCase): + """ Tests the compileapp.py module """ + + def test_compile(self): + from compileapp import compile_application, remove_compiled_application + import os + for appname in ['welcome', 'admin', 'examples']: + appname_path = os.path.join(os.getcwd(), 'applications', appname) + compile_application(appname_path) + remove_compiled_application(appname_path) + return + if __name__ == '__main__': unittest.main() From bda101d43f783bf0dd49d47adc2e6e4c1d1862ca Mon Sep 17 00:00:00 2001 From: ilvalle Date: Thu, 4 Dec 2014 12:13:28 +0100 Subject: [PATCH 2/4] fix gis field case according to ignore_field_case --- gluon/dal/adapters/base.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gluon/dal/adapters/base.py b/gluon/dal/adapters/base.py index f672b0f7..0a60da66 100644 --- a/gluon/dal/adapters/base.py +++ b/gluon/dal/adapters/base.py @@ -339,6 +339,8 @@ class BaseAdapter(ConnectionPool): % (field_type, field_name)) ftype = types[geotype] if self.dbengine == 'postgres' and geotype == 'geometry': + if self.ignore_field_case is True: + field_name = field_name.lower() # parameters: schema, srid, dimension dimension = 2 # GIS.dimension ??? parms = parms.split(',') From 5474c68994bd8bbca80245c0bcc947843acb1c8d Mon Sep 17 00:00:00 2001 From: ilvalle Date: Thu, 4 Dec 2014 12:14:00 +0100 Subject: [PATCH 3/4] More gis tests --- gluon/tests/test_dal.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/gluon/tests/test_dal.py b/gluon/tests/test_dal.py index 451d23bc..d2345532 100644 --- a/gluon/tests/test_dal.py +++ b/gluon/tests/test_dal.py @@ -1544,7 +1544,7 @@ class TestGis(unittest.TestCase): def testGeometry(self): from gluon.dal import geoPoint, geoLine, geoPolygon if not IS_POSTGRESQL: return - db = DAL(DEFAULT_URI, check_reserved=['all'], ignore_field_case=False) + db = DAL(DEFAULT_URI, check_reserved=['all']) t0 = db.define_table('t0', Field('point', 'geometry()')) t1 = db.define_table('t1', Field('line', 'geometry(public, 4326, 2)')) t2 = db.define_table('t2', Field('polygon', 'geometry(public, 4326, 2)')) @@ -1573,6 +1573,29 @@ class TestGis(unittest.TestCase): t2.drop() return + def testGeometryCase(self): + from gluon.dal import geoPoint, geoLine, geoPolygon + if not IS_POSTGRESQL: return + db = DAL(DEFAULT_URI, check_reserved=['all'], ignore_field_case=False) + t0 = db.define_table('t0', Field('point', 'geometry()'), Field('Point', 'geometry()')) + t0.insert(point=geoPoint(1,1)) + t0.insert(Point=geoPoint(2,2)) + t0.drop() + + def testGisMigration(self): + if not IS_POSTGRESQL: return + for b in [True, False]: + db = DAL(DEFAULT_URI, check_reserved=['all'], ignore_field_case=b) + t0 = db.define_table('t0', Field('Point', 'geometry()')) + db.commit() + db.close() + db = DAL(DEFAULT_URI, check_reserved=['all'], ignore_field_case=b) + t0 = db.define_table('t0', Field('New_point', 'geometry()')) + t0.drop() + db.commit() + db.close() + return + if __name__ == '__main__': unittest.main() From e9a89eff82f0ffaac087e675798682b81332e027 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Sat, 6 Dec 2014 00:45:56 +0100 Subject: [PATCH 4/4] tests for lazy tables and substring expr --- gluon/tests/test_dal.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gluon/tests/test_dal.py b/gluon/tests/test_dal.py index d2345532..ac8f91c2 100644 --- a/gluon/tests/test_dal.py +++ b/gluon/tests/test_dal.py @@ -461,6 +461,25 @@ class TestExpressions(unittest.TestCase): self.assertEqual(db(db.tt.aa == -2).select(sum).first()[sum], None) db.tt.drop() + def testSubstring(self): + db = DAL(DEFAULT_URI, check_reserved=['all']) + t0 = db.define_table('t0', Field('name')) + input_name = "web2py" + t0.insert(name=input_name) + exp_slice = t0.name.lower()[4:6] + exp_slice_no_max = t0.name.lower()[4:] + exp_slice_neg_max = t0.name.lower()[2:-2] + exp_slice_neg_start = t0.name.lower()[-2:] + exp_item = t0.name.lower()[3] + out = db(t0).select(exp_slice, exp_item, exp_slice_no_max, exp_slice_neg_max, exp_slice_neg_start).first() + self.assertEqual(out[exp_slice], input_name[4:6]) + self.assertEqual(out[exp_item], input_name[3]) + self.assertEqual(out[exp_slice_no_max], input_name[4:]) + self.assertEqual(out[exp_slice_neg_max], input_name[2:-2]) + self.assertEqual(out[exp_slice_neg_start], input_name[-2:]) + t0.drop() + return + class TestJoin(unittest.TestCase): @@ -1596,6 +1615,16 @@ class TestGis(unittest.TestCase): db.close() return +class TestLazy(unittest.TestCase): + + def testRun(self): + db = DAL(DEFAULT_URI, check_reserved=['all'], lazy_tables=True) + t0 = db.define_table('t0', Field('name')) + self.assertTrue(('t0' in db._LAZY_TABLES.keys())) + db.t0.insert(name='1') + self.assertFalse(('t0' in db._LAZY_TABLES.keys())) + db.t0.drop() + return if __name__ == '__main__': unittest.main()