Skip to content
Snippets Groups Projects
Commit 3e6641f6 authored by Vermaat's avatar Vermaat
Browse files

Merge pull request #67 from mutalyzer/tests-non-sqlite

Unit tests with PostgreSQL and MySQL
parents a30a0d2f 1b141267
No related branches found
No related tags found
No related merge requests found
...@@ -6,9 +6,16 @@ before_install: ...@@ -6,9 +6,16 @@ before_install:
- sudo apt-get update -qq - sudo apt-get update -qq
- sudo apt-get install -y swig - sudo apt-get install -y swig
- pip install -r requirements.txt - pip install -r requirements.txt
- pip install psycopg2
install: install:
- pip install . - pip install .
script: py.test before_script:
- psql -c 'create database mutalyzer_test;' -U postgres
- mysql -e 'create database mutalyzer_test;'
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
notifications: notifications:
slack: slack:
secure: "VsB4CPZCfUPpnt7sL94mYrws2B9VthQhY1+u7NBm6QkAopel0m1rx1vWx3gQCTR0t9vWiP+pSybtQ81PQFNrOSWDsb1QlyEK1JF1QUw5Zui+5wS8fwFM/sgwGIECuo6Oj0zCwC9KMM4olYEMC2c7TNHv4HgwWiMqEK9ItEYSLQY=" secure: "VsB4CPZCfUPpnt7sL94mYrws2B9VthQhY1+u7NBm6QkAopel0m1rx1vWx3gQCTR0t9vWiP+pSybtQ81PQFNrOSWDsb1QlyEK1JF1QUw5Zui+5wS8fwFM/sgwGIECuo6Oj0zCwC9KMM4olYEMC2c7TNHv4HgwWiMqEK9ItEYSLQY="
...@@ -15,9 +15,25 @@ the Mutalyzer source directory. ...@@ -15,9 +15,25 @@ the Mutalyzer source directory.
.. note:: The Mutalyzer package must be installed before running the unit .. note:: The Mutalyzer package must be installed before running the unit
tests. tests.
By default, the tests use an in-memory SQLite database. This can be customized
by setting the `MUTALYZER_TEST_DATABASE_URI` to a valid `SQLAlchemy connection
URI
<http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls>`_
(obviously, the contents of this database will be lost). For example, to use
an SQLite database on the filesystem::
$ MUTALYZER_TEST_DATABASE_URI=sqlite:////tmp/mutalyzer.sql py.test
Or, using `pg_virtualenv
<https://alioth.debian.org/scm/loggerhead/pkg-postgresql/postgresql-common/trunk/view/head:/pg_virtualenv>`_
(included with the Debian PostgreSQL packages), to run the tests with
PostgreSQL::
$ pg_virtualenv bash -c 'MUTALYZER_TEST_DATABASE_URI=postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE} py.test'
Tests are `run automatically on Travis CI Tests are `run automatically on Travis CI
<https://travis-ci.org/LUMC/mutalyzer>`_ for each pull request and push on <https://travis-ci.org/LUMC/mutalyzer>`_ with SQLite, PostgreSQL, and MySQL,
GitHub. for each pull request and push on GitHub.
Testing the web services Testing the web services
......
...@@ -47,7 +47,7 @@ def create_engine(): ...@@ -47,7 +47,7 @@ def create_engine():
engine = sqlalchemy.create_engine(url, **options) engine = sqlalchemy.create_engine(url, **options)
# For convenience, we also create tables if we're using an SQLite # For convenience, we also create tables if we're using an SQLite
# in-memory database. By definition they won't yet exist # in-memory database. By definition they won't yet exist.
Base.metadata.create_all(engine) Base.metadata.create_all(engine)
return engine return engine
......
...@@ -11,6 +11,7 @@ import shutil ...@@ -11,6 +11,7 @@ import shutil
import tempfile import tempfile
from mutalyzer.config import settings from mutalyzer.config import settings
from mutalyzer import db
class TestEnvironment(object): class TestEnvironment(object):
...@@ -25,13 +26,21 @@ class TestEnvironment(object): ...@@ -25,13 +26,21 @@ class TestEnvironment(object):
log_handle, self.log_file = tempfile.mkstemp() log_handle, self.log_file = tempfile.mkstemp()
os.close(log_handle) os.close(log_handle)
database_uri = os.getenv('MUTALYZER_TEST_DATABASE_URI', 'sqlite://')
settings.configure({'DEBUG': False, settings.configure({'DEBUG': False,
'TESTING': True, 'TESTING': True,
'CACHE_DIR': self.cache_dir, 'CACHE_DIR': self.cache_dir,
'REDIS_URI': None, 'REDIS_URI': None,
'DATABASE_URI': 'sqlite://', 'DATABASE_URI': database_uri,
'LOG_FILE': self.log_file}) 'LOG_FILE': self.log_file})
# Mutalyzer create tables automatically if we're using an SQLite
# in-memory database.
if database_uri != 'sqlite://':
db.Base.metadata.drop_all(db.session.get_bind())
db.Base.metadata.create_all(db.session.get_bind())
for fixture in fixtures: for fixture in fixtures:
fixture() fixture()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment