From 7c2a48f75cd6f6047fd2a7516e2345eb9d76d154 Mon Sep 17 00:00:00 2001 From: baztian Date: Wed, 8 Mar 2017 14:54:19 +0100 Subject: [PATCH 1/7] First attempt to run tox on travix. --- .travis.yml | 28 +++++----------------------- ci/before_install.sh | 9 +-------- ci/before_install_jython.sh | 7 +++---- ci/before_install_nonjython.sh | 4 ---- ci/mvnget.sh | 12 ++++++------ requirements-jython.txt | 1 - tox.ini | 17 ++++++++++++++--- 7 files changed, 29 insertions(+), 49 deletions(-) delete mode 100755 ci/before_install_nonjython.sh delete mode 100644 requirements-jython.txt diff --git a/.travis.yml b/.travis.yml index 630f2ac..f9aa315 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,34 +19,16 @@ python: - '3.4' env: - matrix: - - TESTNAME=test_mock JDBC_DRIVER=org.jaydebeapi:mockdriver:1.0-SNAPSHOT - - TESTNAME="test_integration.HsqldbTest test_integration.PropertiesDriverArgsPassingTest" JDBC_DRIVER=org.hsqldb:hsqldb:1.8.0.10 - - TESTNAME=test_integration.SqliteXerialTest JDBC_DRIVER=org.xerial:sqlite-jdbc:3.7.2 - matrix: include: - - python: 2.7 - env: TESTNAME=test_integration.SqlitePyTest - - python: 2.7 - env: JYTHON=org.python:jython-installer:2.7.0 TESTNAME="test_integration.HsqldbTest test_integration.PropertiesDriverArgsPassingTest" JDBC_DRIVER=org.hsqldb:hsqldb:1.8.0.10 - - python: 2.7 - env: JYTHON=org.python:jython-installer:2.7.0 TESTNAME=test_mock JDBC_DRIVER=org.jaydebeapi:mockdriver:1.0-SNAPSHOT + - python: 3.4 + env: JYTHON="org.python;jython-installer;2.7.0" before_install: - ci/before_install.sh + - export PATH="$HOME/bin:$PATH" install: - - if [ "$JDBC_DRIVER" == "org.jaydebeapi:mockdriver:1.0-SNAPSHOT" ]; then (cd mockdriver && mvn -Dmaven.repo.local=$VIRTUAL_ENV/.m2/repository install) ;fi - - if [ -n "$JDBC_DRIVER" ]; then python ci/jipconf_subst.py $VIRTUAL_ENV $VIRTUAL_ENV && pip install jip==0.9.9 && jip install $JDBC_DRIVER && export CLASSPATH=$VIRTUAL_ENV/javalib/* ;fi # TODO: Fix jip to search for local maven repo without twaking .jip - - source $HOME/myvirtualenv/bin/activate - - pip install -e . - - if [ -z "$JYTHON" ]; then pip install coveralls ;fi + - pip install tox-travis -script: - - if [ -z "$JYTHON" ]; then PY="coverage run --source jaydebeapi"; else PY="python" ;fi - - $PY test/testsuite.py $TESTNAME - - if [ "$JDBC_DRIVER" == "org.hsqldb:hsqldb:1.8.0.10" ] ; then $PY test/doctests.py ;fi - -after_success: - - if [ -z "$JYTHON" ]; then coveralls ;fi +script: tox diff --git a/ci/before_install.sh b/ci/before_install.sh index 1b4a35f..1a99394 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -1,11 +1,4 @@ #!/bin/sh set -e -[ -n "$JYTHON" ] && "${TRAVIS_BUILD_DIR}/ci/before_install_jython.sh" || "${TRAVIS_BUILD_DIR}/ci/before_install_nonjython.sh" - -[ -n "$JYTHON" ] && cp requirements-jython.txt requirements.txt || cp requirements-python-${TRAVIS_PYTHON_VERSION}.txt requirements.txt - -if [ -f requirements.txt ] -then - pip install -r requirements.txt -fi +[ -n "$JYTHON" ] && "${TRAVIS_BUILD_DIR}/ci/before_install_jython.sh" || true diff --git a/ci/before_install_jython.sh b/ci/before_install_jython.sh index 21765cf..c9c5826 100755 --- a/ci/before_install_jython.sh +++ b/ci/before_install_jython.sh @@ -1,8 +1,7 @@ #!/bin/sh set -e -JYTHON_JAR=$(${TRAVIS_BUILD_DIR}/ci/mvnget.sh $JYTHON) +JYTHON_JAR=$(${TRAVIS_BUILD_DIR}/ci/mvnget.sh "$JYTHON") java -jar ${JYTHON_JAR} -s -d $HOME/jython - -$HOME/jython/bin/pip install virtualenv -$HOME/jython/bin/virtualenv $HOME/myvirtualenv +mkdir -p $HOME/bin +ln -s $HOME/jython/bin/jython $HOME/bin/ diff --git a/ci/before_install_nonjython.sh b/ci/before_install_nonjython.sh deleted file mode 100755 index 597e62a..0000000 --- a/ci/before_install_nonjython.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -set -e - -ln -s $VIRTUAL_ENV $HOME/myvirtualenv diff --git a/ci/mvnget.sh b/ci/mvnget.sh index a7ad631..27ac129 100755 --- a/ci/mvnget.sh +++ b/ci/mvnget.sh @@ -1,13 +1,13 @@ #!/bin/bash set -e -ARTIFACT_SPEC=$1 -GROUP_ID=${ARTIFACT_SPEC%%:*} -NON_GROUP_ID=${ARTIFACT_SPEC#*:} -ARTIFACT_NAME=`python -c "import re;print(re.search(r':(.*):', '$ARTIFACT_SPEC').group(1))"` +ARTIFACT_SPEC="$1" +GROUP_ID=${ARTIFACT_SPEC%%;*} +NON_GROUP_ID=${ARTIFACT_SPEC#*;} +ARTIFACT_NAME=`python -c "import re;print(re.search(r';(.*);', '$ARTIFACT_SPEC').group(1))"` _PATH=${GROUP_ID/./\/}/$ARTIFACT_NAME -_ARTIFACT_SPEC_BASENAME=${NON_GROUP_ID/:/-} -VERSION=${ARTIFACT_SPEC##*:} +_ARTIFACT_SPEC_BASENAME=${NON_GROUP_ID/;/-} +VERSION=${ARTIFACT_SPEC##*;} echo "Downloading ${ARTIFACT_NAME} version ${VERSION} group id ${GROUP_ID}..." >&2 wget http://search.maven.org/remotecontent?filepath=${_PATH}/$VERSION/${_ARTIFACT_SPEC_BASENAME}.jar -O ${_ARTIFACT_SPEC_BASENAME}.jar echo "...download of ${_ARTIFACT_SPEC_BASENAME}.jar finished." >&2 diff --git a/requirements-jython.txt b/requirements-jython.txt deleted file mode 100644 index 9696b3b..0000000 --- a/requirements-jython.txt +++ /dev/null @@ -1 +0,0 @@ -unittest2==0.5.1 diff --git a/tox.ini b/tox.ini index 61bccad..7e83cae 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,20 @@ [tox] envlist = py{26,27,3}-driver-{hsqldb,mock,sqliteXerial},py27-driver-sqlitePy,jython-driver-{hsqldb,mock} + +[travis] +python = + 2.6: py26-driver-{hsqldb,mock,sqliteXerial} + 2.7: py27-driver-{hsqldb,mock,sqliteXerial,sqlitePy} + 3.4: py34-driver-{hsqldb,mock,sqliteXerial} + +[travis:env] +JYTHON = + org.python;jython-installer;2.7.0: jython-driver-{hsqldb,mock} + [testenv] whitelist_externals = mvn -setenv = CLASSPATH = {envdir}/javalib/* +setenv = + CLASSPATH = {envdir}/javalib/* driver-mock: TESTNAME=test_mock driver-hsqldb: TESTNAME=test_integration.HsqldbTest driver-sqliteXerial: TESTNAME=test_integration.SqliteXerialTest @@ -11,8 +23,7 @@ deps = py26: -rrequirements-python-2.6.txt py27: -rrequirements-python-2.7.txt py3: -rrequirements-python-3.4.txt -# not required for jython >= 2.7 anymore jython: -rrequirements-jython.txt - jip==0.9.9 + jip==0.9.10 commands = python ci/jipconf_subst.py {envdir} {toxworkdir}/shared driver-hsqldb: jip install org.hsqldb:hsqldb:1.8.0.10 From 8c119de9975cb5f692bd59056fc1050f3aed2325 Mon Sep 17 00:00:00 2001 From: baztian Date: Fri, 10 Mar 2017 09:19:39 +0100 Subject: [PATCH 2/7] Apply recommendations from https://github.com/ryanhiebert/tox-travis/issues/62 --- .travis.yml | 2 +- ci/mvnget.sh | 10 +++++----- tox.ini | 4 ---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index f9aa315..5786242 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ env: matrix: include: - python: 3.4 - env: JYTHON="org.python;jython-installer;2.7.0" + env: JYTHON=org.python:jython-installer:2.7.0 TOXENV="jython-driver-{hsqldb,mock}" before_install: - ci/before_install.sh diff --git a/ci/mvnget.sh b/ci/mvnget.sh index 27ac129..dc0a30e 100755 --- a/ci/mvnget.sh +++ b/ci/mvnget.sh @@ -2,12 +2,12 @@ set -e ARTIFACT_SPEC="$1" -GROUP_ID=${ARTIFACT_SPEC%%;*} -NON_GROUP_ID=${ARTIFACT_SPEC#*;} -ARTIFACT_NAME=`python -c "import re;print(re.search(r';(.*);', '$ARTIFACT_SPEC').group(1))"` +GROUP_ID=${ARTIFACT_SPEC%%:*} +NON_GROUP_ID=${ARTIFACT_SPEC#*:} +ARTIFACT_NAME=`python -c "import re;print(re.search(r':(.*):', '$ARTIFACT_SPEC').group(1))"` _PATH=${GROUP_ID/./\/}/$ARTIFACT_NAME -_ARTIFACT_SPEC_BASENAME=${NON_GROUP_ID/;/-} -VERSION=${ARTIFACT_SPEC##*;} +_ARTIFACT_SPEC_BASENAME=${NON_GROUP_ID/:/-} +VERSION=${ARTIFACT_SPEC##*:} echo "Downloading ${ARTIFACT_NAME} version ${VERSION} group id ${GROUP_ID}..." >&2 wget http://search.maven.org/remotecontent?filepath=${_PATH}/$VERSION/${_ARTIFACT_SPEC_BASENAME}.jar -O ${_ARTIFACT_SPEC_BASENAME}.jar echo "...download of ${_ARTIFACT_SPEC_BASENAME}.jar finished." >&2 diff --git a/tox.ini b/tox.ini index 7e83cae..7eef594 100644 --- a/tox.ini +++ b/tox.ini @@ -7,10 +7,6 @@ python = 2.7: py27-driver-{hsqldb,mock,sqliteXerial,sqlitePy} 3.4: py34-driver-{hsqldb,mock,sqliteXerial} -[travis:env] -JYTHON = - org.python;jython-installer;2.7.0: jython-driver-{hsqldb,mock} - [testenv] whitelist_externals = mvn setenv = From bf35ac253e093477dae2d6f0a54e180485122530 Mon Sep 17 00:00:00 2001 From: baztian Date: Fri, 10 Mar 2017 12:20:43 +0100 Subject: [PATCH 3/7] Improve requirements resolution. --- requirements-python-2.6.txt | 2 -- requirements-python-2.7.txt | 2 -- requirements-python-3.4.txt | 1 - tox.ini | 5 ++--- 4 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 requirements-python-2.6.txt delete mode 100644 requirements-python-2.7.txt delete mode 100644 requirements-python-3.4.txt diff --git a/requirements-python-2.6.txt b/requirements-python-2.6.txt deleted file mode 100644 index da45555..0000000 --- a/requirements-python-2.6.txt +++ /dev/null @@ -1,2 +0,0 @@ -JPype1==0.6.0 -unittest2==0.5.1 diff --git a/requirements-python-2.7.txt b/requirements-python-2.7.txt deleted file mode 100644 index da45555..0000000 --- a/requirements-python-2.7.txt +++ /dev/null @@ -1,2 +0,0 @@ -JPype1==0.6.0 -unittest2==0.5.1 diff --git a/requirements-python-3.4.txt b/requirements-python-3.4.txt deleted file mode 100644 index 87a36b2..0000000 --- a/requirements-python-3.4.txt +++ /dev/null @@ -1 +0,0 @@ -JPype1==0.6.0 diff --git a/tox.ini b/tox.ini index 7eef594..b154357 100644 --- a/tox.ini +++ b/tox.ini @@ -16,9 +16,8 @@ setenv = driver-sqliteXerial: TESTNAME=test_integration.SqliteXerialTest driver-sqlitePy: TESTNAME=test_integration.SqlitePyTest deps = - py26: -rrequirements-python-2.6.txt - py27: -rrequirements-python-2.7.txt - py3: -rrequirements-python-3.4.txt + py: JPype1==0.6.2 + py26: unittest2==0.5.1 jip==0.9.10 commands = python ci/jipconf_subst.py {envdir} {toxworkdir}/shared From 4ef125e6b1e26400c06f8017c415bd5538179355 Mon Sep 17 00:00:00 2001 From: baztian Date: Fri, 10 Mar 2017 09:59:23 +0100 Subject: [PATCH 4/7] Introduce Python 3.6 to the build matrix. --- .travis.yml | 3 ++- tox.ini | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5786242..e3ed5fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,11 +17,12 @@ python: - '2.6' - '2.7' - '3.4' + - '3.6' env: matrix: include: - - python: 3.4 + - python: 3.6 env: JYTHON=org.python:jython-installer:2.7.0 TOXENV="jython-driver-{hsqldb,mock}" before_install: diff --git a/tox.ini b/tox.ini index b154357..b7773c6 100644 --- a/tox.ini +++ b/tox.ini @@ -6,6 +6,7 @@ python = 2.6: py26-driver-{hsqldb,mock,sqliteXerial} 2.7: py27-driver-{hsqldb,mock,sqliteXerial,sqlitePy} 3.4: py34-driver-{hsqldb,mock,sqliteXerial} + 3.6: py36-driver-{hsqldb,mock,sqliteXerial} [testenv] whitelist_externals = mvn @@ -16,10 +17,11 @@ setenv = driver-sqliteXerial: TESTNAME=test_integration.SqliteXerialTest driver-sqlitePy: TESTNAME=test_integration.SqlitePyTest deps = - py: JPype1==0.6.2 py26: unittest2==0.5.1 + py: JPype1==0.6.2 jip==0.9.10 commands = + python --version python ci/jipconf_subst.py {envdir} {toxworkdir}/shared driver-hsqldb: jip install org.hsqldb:hsqldb:1.8.0.10 driver-sqliteXerial: jip install org.xerial:sqlite-jdbc:3.7.2 From c150bb82900921b7a000791de71e4e5c2bccf9bc Mon Sep 17 00:00:00 2001 From: baztian Date: Fri, 10 Mar 2017 11:13:38 +0100 Subject: [PATCH 5/7] Add coverage and coveralls back to tox and travis. --- .gitignore | 1 + ci/run_coveralls.py | 15 +++++++++++++++ tox.ini | 7 +++++-- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 ci/run_coveralls.py diff --git a/.gitignore b/.gitignore index b7ab98b..97704fe 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,6 @@ target/ .classpath .project .tox +.coverage *.iml .idea/ diff --git a/ci/run_coveralls.py b/ci/run_coveralls.py new file mode 100644 index 0000000..6bbf61d --- /dev/null +++ b/ci/run_coveralls.py @@ -0,0 +1,15 @@ +#!/bin/env/python + +"""Runs coveralls if in Travis CI build environment. Taken from +http://stackoverflow.com/a/33012308/1960601 +""" + +import os + +from subprocess import call + + +if __name__ == '__main__': + if 'TRAVIS' in os.environ: + rc = call('coveralls') + raise SystemExit(rc) diff --git a/tox.ini b/tox.ini index b7773c6..cbcbe8a 100644 --- a/tox.ini +++ b/tox.ini @@ -10,6 +10,7 @@ python = [testenv] whitelist_externals = mvn +passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH setenv = CLASSPATH = {envdir}/javalib/* driver-mock: TESTNAME=test_mock @@ -20,6 +21,7 @@ deps = py26: unittest2==0.5.1 py: JPype1==0.6.2 jip==0.9.10 + coveralls commands = python --version python ci/jipconf_subst.py {envdir} {toxworkdir}/shared @@ -27,5 +29,6 @@ commands = driver-sqliteXerial: jip install org.xerial:sqlite-jdbc:3.7.2 driver-mock: mvn -Dmaven.repo.local={toxworkdir}/shared/.m2/repository -f mockdriver/pom.xml install driver-mock: jip install org.jaydebeapi:mockdriver:1.0-SNAPSHOT - {envbindir}/python test/testsuite.py {env:TESTNAME} - driver-hsqldb: {envbindir}/python test/doctests.py + coverage run --source {envsitepackagesdir}/jaydebeapi test/testsuite.py {env:TESTNAME} + driver-hsqldb: coverage run -a --source {envsitepackagesdir}/jaydebeapi test/doctests.py + python ci/run_coveralls.py From 4c6efb7113e695b8c6f387162312cc98f6cbd17f Mon Sep 17 00:00:00 2001 From: baztian Date: Fri, 10 Mar 2017 11:27:55 +0100 Subject: [PATCH 6/7] Fix coveralls run on Python 2.6. Skip coveralls for Jython. --- ci/run_coveralls.py | 4 ++++ tox.ini | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ci/run_coveralls.py b/ci/run_coveralls.py index 6bbf61d..35e719b 100644 --- a/ci/run_coveralls.py +++ b/ci/run_coveralls.py @@ -5,11 +5,15 @@ http://stackoverflow.com/a/33012308/1960601 """ import os +import sys from subprocess import call if __name__ == '__main__': + if sys.platform.lower().startswith('java'): + print("Export to coveralls skipped for Jython") + sys.exit(0) if 'TRAVIS' in os.environ: rc = call('coveralls') raise SystemExit(rc) diff --git a/tox.ini b/tox.ini index cbcbe8a..9c76df3 100644 --- a/tox.ini +++ b/tox.ini @@ -19,6 +19,9 @@ setenv = driver-sqlitePy: TESTNAME=test_integration.SqlitePyTest deps = py26: unittest2==0.5.1 + # urllib3 required by coveralls. See https://github.com/eddyxu/cpp-coveralls/issues/108 + py26: urllib3[secure] + py: JPype1==0.6.2 jip==0.9.10 coveralls @@ -29,6 +32,6 @@ commands = driver-sqliteXerial: jip install org.xerial:sqlite-jdbc:3.7.2 driver-mock: mvn -Dmaven.repo.local={toxworkdir}/shared/.m2/repository -f mockdriver/pom.xml install driver-mock: jip install org.jaydebeapi:mockdriver:1.0-SNAPSHOT - coverage run --source {envsitepackagesdir}/jaydebeapi test/testsuite.py {env:TESTNAME} + coverage run -a --source {envsitepackagesdir}/jaydebeapi test/testsuite.py {env:TESTNAME} driver-hsqldb: coverage run -a --source {envsitepackagesdir}/jaydebeapi test/doctests.py python ci/run_coveralls.py From 561d447c098110411532884c1526c16eb8a46ccd Mon Sep 17 00:00:00 2001 From: baztian Date: Fri, 10 Mar 2017 11:57:32 +0100 Subject: [PATCH 7/7] Switch to tox develeopment mode to fix source view on coveralls. --- tox.ini | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index 9c76df3..d916a25 100644 --- a/tox.ini +++ b/tox.ini @@ -9,6 +9,8 @@ python = 3.6: py36-driver-{hsqldb,mock,sqliteXerial} [testenv] +# usedevelop required to enable coveralls source code view. +usedevelop=True whitelist_externals = mvn passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH setenv = @@ -21,7 +23,6 @@ deps = py26: unittest2==0.5.1 # urllib3 required by coveralls. See https://github.com/eddyxu/cpp-coveralls/issues/108 py26: urllib3[secure] - py: JPype1==0.6.2 jip==0.9.10 coveralls @@ -32,6 +33,6 @@ commands = driver-sqliteXerial: jip install org.xerial:sqlite-jdbc:3.7.2 driver-mock: mvn -Dmaven.repo.local={toxworkdir}/shared/.m2/repository -f mockdriver/pom.xml install driver-mock: jip install org.jaydebeapi:mockdriver:1.0-SNAPSHOT - coverage run -a --source {envsitepackagesdir}/jaydebeapi test/testsuite.py {env:TESTNAME} - driver-hsqldb: coverage run -a --source {envsitepackagesdir}/jaydebeapi test/doctests.py + coverage run -a --source jaydebeapi test/testsuite.py {env:TESTNAME} + driver-hsqldb: coverage run -a --source jaydebeapi test/doctests.py python ci/run_coveralls.py