diff --git a/.travis.yml b/.travis.yml index b66a78f3077cd054f44c995d402351f28bfd808d..698cb61c25cbe3475d78d6027eebd45049521bf4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,28 @@ # Validate this file using http://lint.travis-ci.org/ language: python +addons: + postgresql: "9.4" +services: + - redis-server python: - "2.7" +env: + global: + - MUTALYZER_TEST_REDIS_URI=redis://localhost + matrix: + - MUTALYZER_TEST_DATABASE_URI=sqlite:// + - MUTALYZER_TEST_DATABASE_URI=postgres://postgres@127.0.0.1/mutalyzer_test + - MUTALYZER_TEST_DATABASE_URI=mysql://travis@127.0.0.1/mutalyzer_test?charset=utf8 before_install: - sudo apt-get update -qq - sudo apt-get install -y swig - pip install -r requirements.txt - - pip install psycopg2 + - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'postgres' ]]; then pip install psycopg2; fi" install: - pip install . before_script: - - psql -c 'create database mutalyzer_test;' -U postgres - - mysql -e 'create database mutalyzer_test;' + - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'postgres' ]]; then psql -c 'DROP DATABASE IF EXISTS mutalyzer_test;' -U postgres; fi" + - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'postgres' ]]; then psql -c 'CREATE DATABASE mutalyzer_test;' -U postgres; fi" + - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'mysql' ]]; then mysql -e 'CREATE DATABASE IF NOT EXISTS mutalyzer_test;'; fi" script: - py.test - - MUTALYZER_TEST_DATABASE_URI=postgres://postgres@127.0.0.1/mutalyzer_test py.test - - MUTALYZER_TEST_DATABASE_URI=mysql://travis@127.0.0.1/mutalyzer_test?charset=utf8 py.test diff --git a/doc/testing.rst b/doc/testing.rst index 706d52251846acbff851c1fb29f55066c2c81616..e7bf32f0b80062d85b55d1b242febcec98e7f034 100644 --- a/doc/testing.rst +++ b/doc/testing.rst @@ -31,6 +31,9 @@ PostgreSQL:: $ pg_virtualenv bash -c 'MUTALYZER_TEST_DATABASE_URI=postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE} py.test' +Similarly, the `MUTALYZER_TEST_REDIS_URI` specifies a Redis server to use for +testing. If unspecified, a mock Redis server is used. + Tests are `run automatically on Travis CI <https://travis-ci.org/mutalyzer/mutalyzer>`_ with SQLite, PostgreSQL, and MySQL, for each pull request and push on GitHub. diff --git a/tests/utils.py b/tests/utils.py index 6743804fdb528b75d0ffb3c1c2a90b821c9ae88f..0e77b291c48747a49da6dd7965826dd79be16053 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -11,6 +11,7 @@ import shutil import tempfile from mutalyzer.config import settings +from mutalyzer.redisclient import client as redis from mutalyzer import db @@ -27,11 +28,12 @@ class TestEnvironment(object): os.close(log_handle) database_uri = os.getenv('MUTALYZER_TEST_DATABASE_URI', 'sqlite://') + redis_uri = os.getenv('MUTALYZER_TEST_REDIS_URI', None) settings.configure({'DEBUG': False, 'TESTING': True, 'CACHE_DIR': self.cache_dir, - 'REDIS_URI': None, + 'REDIS_URI': redis_uri, 'DATABASE_URI': database_uri, 'LOG_FILE': self.log_file}) @@ -41,6 +43,9 @@ class TestEnvironment(object): db.Base.metadata.drop_all(db.session.get_bind()) db.Base.metadata.create_all(db.session.get_bind()) + if redis_uri is not None: + redis.flushdb() + for fixture in fixtures: fixture()