diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2016-12-24 02:15:24 +0100 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2016-12-24 04:12:03 +0100 |
commit | def22982fb01c6b1411c721ddf0a9f73865d0383 (patch) | |
tree | 0253a5268c9859b7688a6bc9729ca1e48c986e6a | |
parent | 11ad1005e0b03de7eefe883e890a060611bcaede (diff) | |
download | psycopg2-def22982fb01c6b1411c721ddf0a9f73865d0383.tar.gz |
Run the tests against all the available server versions
-rw-r--r-- | .travis.yml | 18 | ||||
-rwxr-xr-x | scripts/travis_prepare.sh | 41 | ||||
-rwxr-xr-x | scripts/travis_test.sh | 39 |
3 files changed, 87 insertions, 11 deletions
diff --git a/.travis.yml b/.travis.yml index 02d9604..d41c801 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,8 @@ -language: python - -services: - - postgresql +# Travis CI configuration file for psycopg2 -addons: - postgresql: 9.4 +dist: trusty +sudo: required +language: python python: - 2.6 @@ -15,14 +13,12 @@ python: - 3.5 - 3.6-dev -before_script: - - psql -c 'create database psycopg2_test;' -U postgres - - psql -c 'create extension hstore;' -U postgres - install: - python setup.py install -script: make check +script: + - sudo scripts/travis_prepare.sh + - scripts/travis_test.sh notifications: diff --git a/scripts/travis_prepare.sh b/scripts/travis_prepare.sh new file mode 100755 index 0000000..86b85ba --- /dev/null +++ b/scripts/travis_prepare.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +set -e + +# Prepare the test databases in Travis CI. +# The script should be run with sudo. +# The script is not idempotent: it assumes the machine in a clean state +# and is designed for a sudo-enabled Trusty environment. + +set_param () { + # Set a parameter in a postgresql.conf file + version=$1 + param=$2 + value=$3 + + sed -i "s/^\s*#\?\s*$param.*/$param = $value/" \ + "/etc/postgresql/$version/psycopg/postgresql.conf" +} + +create () { + version=$1 + port=$2 + dbname=psycopg2_test_$port + + pg_createcluster -p $port --start-conf manual $version psycopg + set_param "$version" max_prepared_transactions 10 + sed -i "s/local\s*all\s*postgres.*/local all postgres trust/" \ + "/etc/postgresql/$version/psycopg/pg_hba.conf" + pg_ctlcluster "$version" psycopg start + + sudo -u postgres psql -c "create user travis" "port=$port" +} + +# Would give a permission denied error in the travis build dir +cd / + +create 9.6 54396 +create 9.5 54395 +create 9.4 54394 +create 9.3 54393 +create 9.2 54392 diff --git a/scripts/travis_test.sh b/scripts/travis_test.sh new file mode 100755 index 0000000..3a1bdb2 --- /dev/null +++ b/scripts/travis_test.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Run the tests in all the databases +# The script is designed for a Trusty environment. + +set -e + +run_test () { + version=$1 + port=$2 + pyver=$(python -c "import sys; print(''.join(map(str,sys.version_info[:2])))") + dbname=psycopg_test_$pyver + + # Create a database for each python version to allow tests to run in parallel + psql -c "create database $dbname" \ + "user=postgres port=$port dbname=postgres" + + psql -c "grant create on database $dbname to travis" \ + "user=postgres port=$port dbname=postgres" + + psql -c "create extension hstore" \ + "user=postgres port=$port dbname=$dbname" + + printf "\n\nRunning tests against PostgreSQL $version\n\n" + export PSYCOPG2_TESTDB=$dbname + export PSYCOPG2_TESTDB_PORT=$port + export PSYCOPG2_TESTDB_USER=travis + make check + + printf "\n\nRunning tests against PostgreSQL $version (green mode)\n\n" + export PSYCOPG2_TEST_GREEN=1 + make check +} + +run_test 9.6 54396 +run_test 9.5 54395 +run_test 9.4 54394 +run_test 9.3 54393 +run_test 9.2 54392 |