summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2016-12-24 02:15:24 +0100
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2016-12-24 04:12:03 +0100
commitdef22982fb01c6b1411c721ddf0a9f73865d0383 (patch)
tree0253a5268c9859b7688a6bc9729ca1e48c986e6a
parent11ad1005e0b03de7eefe883e890a060611bcaede (diff)
downloadpsycopg2-def22982fb01c6b1411c721ddf0a9f73865d0383.tar.gz
Run the tests against all the available server versions
-rw-r--r--.travis.yml18
-rwxr-xr-xscripts/travis_prepare.sh41
-rwxr-xr-xscripts/travis_test.sh39
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