diff --git a/VERSION b/VERSION
index 7186441f..536b20f1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Version 1.99.7 (2012-05-10 18:02:10) dev
+Version 1.99.7 (2012-05-10 18:20:22) dev
diff --git a/applications/examples/views/default/who.html b/applications/examples/views/default/who.html
index ead81187..c7e6984d 100644
--- a/applications/examples/views/default/who.html
+++ b/applications/examples/views/default/who.html
@@ -80,6 +80,7 @@
Kyle Smith (javascript)
Limodou (winservice)
Lucas D'Ávila
+Marc Abramowitz (tests and travis continuous integration)
Marcel Leuthi (Oracle support)
Marcel Hellkamp (Bottle developer, multiple web server support)
Marcello Della Longa (italian translation)
diff --git a/gluon/contrib/pymysql/tests/__init__.py b/gluon/contrib/pymysql/tests/__init__.py
index fd4b29af..fa4d618d 100644
--- a/gluon/contrib/pymysql/tests/__init__.py
+++ b/gluon/contrib/pymysql/tests/__init__.py
@@ -1,6 +1,6 @@
-from pymysql.tests.test_issues import *
-from pymysql.tests.test_example import *
-from pymysql.tests.test_basic import *
+from gluon.contrib.pymysql.tests.test_issues import *
+from gluon.contrib.pymysql.tests.test_example import *
+from gluon.contrib.pymysql.tests.test_basic import *
if __name__ == "__main__":
import unittest
diff --git a/gluon/contrib/pymysql/tests/base.py b/gluon/contrib/pymysql/tests/base.py
index 3e97dada..9959837f 100644
--- a/gluon/contrib/pymysql/tests/base.py
+++ b/gluon/contrib/pymysql/tests/base.py
@@ -1,4 +1,4 @@
-import pymysql
+from gluon.contrib import pymysql
import unittest
class PyMySQLTestCase(unittest.TestCase):
@@ -8,10 +8,13 @@ class PyMySQLTestCase(unittest.TestCase):
{"host":"localhost","user":"root","passwd":"","db":"test_pymysql2"}]
def setUp(self):
- self.connections = []
+ try:
+ self.connections = []
- for params in self.databases:
- self.connections.append(pymysql.connect(**params))
+ for params in self.databases:
+ self.connections.append(pymysql.connect(**params))
+ except pymysql.err.OperationalError as e:
+ self.skipTest('Cannot connect to MySQL - skipping pymysql tests because of (%s) %s' % (type(e), e))
def tearDown(self):
for connection in self.connections:
diff --git a/gluon/contrib/pymysql/tests/test_basic.py b/gluon/contrib/pymysql/tests/test_basic.py
index 01f5d025..83216414 100644
--- a/gluon/contrib/pymysql/tests/test_basic.py
+++ b/gluon/contrib/pymysql/tests/test_basic.py
@@ -1,5 +1,5 @@
-from pymysql.tests import base
-from pymysql import util
+from gluon.contrib.pymysql.tests import base
+from gluon.contrib.pymysql import util
import time
import datetime
diff --git a/gluon/contrib/pymysql/tests/test_example.py b/gluon/contrib/pymysql/tests/test_example.py
index 2da05db3..b8ac9412 100644
--- a/gluon/contrib/pymysql/tests/test_example.py
+++ b/gluon/contrib/pymysql/tests/test_example.py
@@ -1,5 +1,5 @@
-import pymysql
-from pymysql.tests import base
+from gluon.contrib import pymysql
+from gluon.contrib.pymysql.tests import base
class TestExample(base.PyMySQLTestCase):
def test_example(self):
diff --git a/gluon/contrib/pymysql/tests/test_issues.py b/gluon/contrib/pymysql/tests/test_issues.py
index 2d921dc0..e88f7d35 100644
--- a/gluon/contrib/pymysql/tests/test_issues.py
+++ b/gluon/contrib/pymysql/tests/test_issues.py
@@ -1,5 +1,5 @@
-import pymysql
-from pymysql.tests import base
+from gluon.contrib import pymysql
+from gluon.contrib.pymysql.tests import base
import sys
diff --git a/gluon/widget.py b/gluon/widget.py
index 7045360f..f31af393 100644
--- a/gluon/widget.py
+++ b/gluon/widget.py
@@ -55,6 +55,23 @@ if not sys.version[:3] in ['2.4', '2.5', '2.6', '2.7']:
logger = logging.getLogger("web2py")
+def run_system_tests():
+ major_version = sys.version_info[0]
+ minor_version = sys.version_info[1]
+ print "minor_version = %r" % minor_version
+ if major_version == 2:
+ if minor_version in (5, 6):
+ print "Python 2.5 or 2.6"
+ os.system("PYTHONPATH=. unit2 -v gluon.tests")
+ elif minor_version in (7,):
+ print "Python 2.7"
+ os.system("PYTHONPATH=. python -m unittest -v gluon.tests")
+ else:
+ print "unknown python 2.x version"
+ else:
+ print "Only Python 2.x supported."
+
+
class IO(object):
""" """
@@ -735,6 +752,14 @@ def console():
default=None,
help=msg)
+
+ msg = 'runs web2py tests'
+ parser.add_option('--run_system_tests',
+ action='store_true',
+ dest='run_system_tests',
+ default=False,
+ help=msg)
+
if '-A' in sys.argv: k = sys.argv.index('-A')
elif '--args' in sys.argv: k = sys.argv.index('--args')
else: k=len(sys.argv)
@@ -744,6 +769,10 @@ def console():
global_settings.cmd_options = options
global_settings.cmd_args = args
+ if options.run_system_tests:
+ run_system_tests()
+ sys.exit(0)
+
if options.quiet:
capture = cStringIO.StringIO()
sys.stdout = capture
diff --git a/travis.yml b/travis.yml
new file mode 100644
index 00000000..5504b322
--- /dev/null
+++ b/travis.yml
@@ -0,0 +1,17 @@
+language: python
+
+python:
+ - '2.5'
+ - '2.6'
+ - '2.7'
+
+before_script:
+ - pip install unittest2
+ - mysql -e 'create database test_pymysql;'
+ - mysql -e 'create database test_pymysql2;'
+
+script: PYTHONPATH=. unit2 -v gluon.tests
+
+notifications:
+ irc:
+ channels: "irc.freenode.org#web2py"