From bfd385f9696954929ab8fd783a0d8e00dcec9d4c Mon Sep 17 00:00:00 2001 From: mdipierro Date: Fri, 15 Mar 2013 15:12:01 -0500 Subject: [PATCH] travis badge in README, thanks niphlod --- Makefile | 2 +- README.markdown | 5 ++ VERSION | 2 +- gluon/tests/test_dal.py | 112 +++++++++++++++++++++++----------------- 4 files changed, 71 insertions(+), 50 deletions(-) diff --git a/Makefile b/Makefile index 8830939f..35ceb97a 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ all: clean: rm -f httpserver.log rm -f parameters*.py - rm -f -r applications/*/compiled + rm -f -r applications/*/compiled find ./ -name '*~' -exec rm -f {} \; find ./ -name '*.orig' -exec rm -f {} \; find ./ -name '*.rej' -exec rm -f {} \; diff --git a/README.markdown b/README.markdown index f2156f7a..11729895 100644 --- a/README.markdown +++ b/README.markdown @@ -6,6 +6,11 @@ It is written and programmable in Python. LGPLv3 License Learn more at http://web2py.com + +## Tests + +[![Build Status](https://travis-ci.org/web2py/web2py.png)](https://travis-ci.org/web2py/web2py) + ## Installation Instructions To start web2py there is NO NEED to install it. Just unzip and do: diff --git a/VERSION b/VERSION index 7b7d72d0..9abcf6c0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.4.4-stable+timestamp.2013.03.15.14.54.45 +Version 2.4.4-stable+timestamp.2013.03.15.15.11.13 diff --git a/gluon/tests/test_dal.py b/gluon/tests/test_dal.py index fa7c081b..dbdf57c0 100644 --- a/gluon/tests/test_dal.py +++ b/gluon/tests/test_dal.py @@ -6,6 +6,7 @@ import sys import os +import glob if os.path.isdir('gluon'): sys.path.append(os.path.realpath('gluon')) else: @@ -19,6 +20,11 @@ except: from io import StringIO from dal import DAL, Field, Table, SQLALL +#for travis-ci +DEFAULT_URI = os.environ.get('DB', 'sqlite:memory') +print 'Testing against %s engine (%s)' % (DEFAULT_URI.partition(':')[0], DEFAULT_URI) + + ALLOWED_DATATYPES = [ 'string', 'text', @@ -41,6 +47,8 @@ def setUpModule(): def tearDownModule(): if os.path.isfile('sql.log'): os.unlink('sql.log') + for a in glob.glob('*.table'): + os.unlink(a) class TestFields(unittest.TestCase): @@ -96,7 +104,7 @@ class TestFields(unittest.TestCase): isinstance(f.formatter(datetime.datetime.now()), str) def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) for ft in ['string', 'text', 'password', 'upload', 'blob']: db.define_table('t', Field('a', ft, default='')) self.assertEqual(db.t.insert(a='x'), 1) @@ -198,7 +206,7 @@ class TestTable(unittest.TestCase): in str(persons.ALL)) def testTableAlias(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) persons = Table(db, 'persons', Field('firstname', 'string'), Field('lastname', 'string')) aliens = persons.with_alias('aliens') @@ -221,7 +229,7 @@ class TestTable(unittest.TestCase): class TestInsert(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) self.assertEqual(db.t.insert(a='1'), 1) self.assertEqual(db.t.insert(a='1'), 2) @@ -236,7 +244,7 @@ class TestInsert(unittest.TestCase): class TestSelect(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) self.assertEqual(db.t.insert(a='1'), 1) self.assertEqual(db.t.insert(a='2'), 2) @@ -267,7 +275,7 @@ class TestSelect(unittest.TestCase): class TestBelongs(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) self.assertEqual(db.t.insert(a='1'), 1) self.assertEqual(db.t.insert(a='2'), 2) @@ -287,7 +295,7 @@ class TestBelongs(unittest.TestCase): class TestContains(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a', 'list:string')) self.assertEqual(db.t.insert(a=['aaa','bbb']), 1) self.assertEqual(db.t.insert(a=['bbb','ddd']), 2) @@ -304,7 +312,7 @@ class TestContains(unittest.TestCase): class TestLike(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) self.assertEqual(db.t.insert(a='abc'), 1) self.assertEqual(len(db(db.t.a.like('a%')).select()), 1) @@ -330,7 +338,7 @@ class TestLike(unittest.TestCase): class TestDatetime(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a', 'datetime')) self.assertEqual(db.t.insert(a=datetime.datetime(1971, 12, 21, 11, 30)), 1) @@ -353,7 +361,7 @@ class TestDatetime(unittest.TestCase): class TestExpressions(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a', 'integer')) self.assertEqual(db.t.insert(a=1), 1) self.assertEqual(db.t.insert(a=2), 2) @@ -366,7 +374,7 @@ class TestExpressions(unittest.TestCase): class TestJoin(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t1', Field('a')) db.define_table('t2', Field('a'), Field('b', db.t1)) i1 = db.t1.insert(a='1') @@ -397,27 +405,27 @@ class TestJoin(unittest.TestCase): self.assertEqual(db().select(db.t1.ALL, db.t2.ALL, left=db.t2.on(db.t1.id == db.t2.b), orderby=db.t1.a | db.t2.a)[3].t2.a, None) - self.assertEqual(len(db().select(db.t1.ALL, db.t2.id.count(), + self.assertEqual(len(db().select(db.t1.a, db.t2.id.count(), left=db.t2.on(db.t1.id == db.t2.b), - orderby=db.t1.a | db.t2.a, groupby=db.t1.a)), + orderby=db.t1.a, groupby=db.t1.a)), 3) - self.assertEqual(db().select(db.t1.ALL, db.t2.id.count(), + self.assertEqual(db().select(db.t1.a, db.t2.id.count(), left=db.t2.on(db.t1.id == db.t2.b), - orderby=db.t1.a | db.t2.a, + orderby=db.t1.a, groupby=db.t1.a)[0]._extra[db.t2.id.count()], 1) - self.assertEqual(db().select(db.t1.ALL, db.t2.id.count(), + self.assertEqual(db().select(db.t1.a, db.t2.id.count(), left=db.t2.on(db.t1.id == db.t2.b), - orderby=db.t1.a | db.t2.a, + orderby=db.t1.a, groupby=db.t1.a)[1]._extra[db.t2.id.count()], 2) - self.assertEqual(db().select(db.t1.ALL, db.t2.id.count(), + self.assertEqual(db().select(db.t1.a, db.t2.id.count(), left=db.t2.on(db.t1.id == db.t2.b), - orderby=db.t1.a | db.t2.a, + orderby=db.t1.a, groupby=db.t1.a)[2]._extra[db.t2.id.count()], 0) - db.t1.drop() db.t2.drop() + db.t1.drop() db.define_table('person',Field('name')) id = db.person.insert(name="max") @@ -434,7 +442,7 @@ class TestJoin(unittest.TestCase): class TestMinMaxSum(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a', 'integer')) self.assertEqual(db.t.insert(a=1), 1) self.assertEqual(db.t.insert(a=2), 2) @@ -456,7 +464,7 @@ class TestCache(unittest.TestCase): def testRun(self): from cache import CacheInRam cache = CacheInRam() - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) db.t.insert(a='1') r0 = db().select(db.t.ALL) @@ -474,21 +482,21 @@ class TestCache(unittest.TestCase): class TestMigrations(unittest.TestCase): def testRun(self): - db = DAL('sqlite://.storage.db') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a'), migrate='.storage.table') db.commit() db.close() - db = DAL('sqlite://.storage.db') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a'), Field('b'), migrate='.storage.table') db.commit() db.close() - db = DAL('sqlite://.storage.db') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a'), Field('b', 'text'), migrate='.storage.table') db.commit() db.close() - db = DAL('sqlite://.storage.db') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a'), migrate='.storage.table') db.t.drop() db.commit() @@ -500,10 +508,10 @@ class TestMigrations(unittest.TestCase): if os.path.exists('.storage.table'): os.unlink('.storage.table') -class TestReferece(unittest.TestCase): +class TestReference(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('name'), Field('a','reference t')) db.commit() x = db.t.insert(name='max') @@ -523,7 +531,7 @@ class TestReferece(unittest.TestCase): class TestClientLevelOps(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) db.commit() db.t.insert(a="test") @@ -546,7 +554,7 @@ class TestClientLevelOps(unittest.TestCase): class TestVirtualFields(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a')) db.commit() db.t.insert(a="test") @@ -560,7 +568,7 @@ class TestVirtualFields(unittest.TestCase): class TestComputedFields(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('t', Field('a'), Field('b',default='x'), @@ -574,7 +582,7 @@ class TestComputedFields(unittest.TestCase): class TestImportExportFields(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('person', Field('name')) db.define_table('pet',Field('friend',db.person),Field('name')) for n in range(2): @@ -598,7 +606,7 @@ class TestImportExportFields(unittest.TestCase): class TestImportExportUuidFields(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('person', Field('name'),Field('uuid')) db.define_table('pet',Field('friend',db.person),Field('name')) for n in range(2): @@ -622,7 +630,7 @@ class TestImportExportUuidFields(unittest.TestCase): class TestDALDictImportExport(unittest.TestCase): def testRun(self): - db = DAL('sqlite:memory:') + db = DAL(DEFAULT_URI) db.define_table('person', Field('name', default="Michael"),Field('uuid')) db.define_table('pet',Field('friend',db.person),Field('name')) dbdict = db.as_dict(flat=True, sanitize=False) @@ -635,13 +643,18 @@ class TestDALDictImportExport(unittest.TestCase): assert dbdict["items"]["person"]["items"]["name"]["default"] == db.person.name.default assert dbdict + + db2 = DAL(dbdict) assert len(db.tables) == len(db2.tables) assert hasattr(db2, "pet") and isinstance(db2.pet, Table) assert hasattr(db2.pet, "friend") and isinstance(db2.pet.friend, Field) + db.pet.drop() + db.commit() + + db2.commit() have_serializers = True - try: import serializers dbjson = db.as_json(sanitize=False) @@ -649,14 +662,13 @@ class TestDALDictImportExport(unittest.TestCase): db3 = DAL(serializers.loads_json(dbjson)) assert hasattr(db3, "person") and hasattr(db3.person, "uuid") and\ db3.person.uuid.type == db.person.uuid.type - db3.pet.drop() db3.person.drop() db3.commit() except ImportError: pass mpfc = "Monty Python's Flying Circus" - dbdict4 = {"uri": 'sqlite:memory:', + dbdict4 = {"uri": DEFAULT_URI, "items":{"staff":{"items": {"name": {"default":"Michael"}, "food": @@ -677,35 +689,39 @@ class TestDALDictImportExport(unittest.TestCase): assert db4(db4.show).select().first().id == 1 assert db4(db4.show).select().first().name == mpfc - dbdict5 = {"uri": 'sqlite:memory:'} + db4.staff.drop() + db4.show.drop() + db4.commit() + + dbdict5 = {"uri": DEFAULT_URI} db5 = DAL(dbdict5) assert db5.tables in ([], None) assert not (str(db5) in ("", None)) - dbdict6 = {"uri": 'sqlite:memory:', + dbdict6 = {"uri": DEFAULT_URI, "items":{"staff":{}, "show":{"items": {"name": {}, "rating": - {"type":"double"}}}}} + {"type":"double"} + } + } + } + } db6 = DAL(dbdict6) + assert len(db6["staff"].fields) == 1 assert "name" in db6["show"].fields assert db6.staff.insert() is not None assert db6(db6.staff).select().first().id == 1 + db6.staff.drop() db6.show.drop() db6.commit() - db4.staff.drop() - db4.show.drop() - db4.commit() - db2.pet.drop() - db2.person.drop() - db2.commit() - db.pet.drop() - db.person.drop() - db.commit() + + + if __name__ == '__main__':