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/.travis.yml b/.travis.yml index 630f2ac..e3ed5fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,36 +17,19 @@ python: - '2.6' - '2.7' - '3.4' + - '3.6' 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.6 + env: JYTHON=org.python:jython-installer:2.7.0 TOXENV="jython-driver-{hsqldb,mock}" 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..dc0a30e 100755 --- a/ci/mvnget.sh +++ b/ci/mvnget.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -ARTIFACT_SPEC=$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))"` diff --git a/ci/run_coveralls.py b/ci/run_coveralls.py new file mode 100644 index 0000000..35e719b --- /dev/null +++ b/ci/run_coveralls.py @@ -0,0 +1,19 @@ +#!/bin/env/python + +"""Runs coveralls if in Travis CI build environment. Taken from +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/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/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 61bccad..d916a25 100644 --- a/tox.ini +++ b/tox.ini @@ -1,23 +1,38 @@ [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} + 3.6: py36-driver-{hsqldb,mock,sqliteXerial} + [testenv] +# usedevelop required to enable coveralls source code view. +usedevelop=True whitelist_externals = mvn -setenv = CLASSPATH = {envdir}/javalib/* +passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH +setenv = + CLASSPATH = {envdir}/javalib/* driver-mock: TESTNAME=test_mock driver-hsqldb: TESTNAME=test_integration.HsqldbTest 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 -# not required for jython >= 2.7 anymore jython: -rrequirements-jython.txt - jip==0.9.9 + 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 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 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 -a --source jaydebeapi test/testsuite.py {env:TESTNAME} + driver-hsqldb: coverage run -a --source jaydebeapi test/doctests.py + python ci/run_coveralls.py