From 29bb05ec08f26cbbdca360ca17d620b6155411ca Mon Sep 17 00:00:00 2001 From: Dennis Siemensma Date: Tue, 8 Mar 2016 23:07:08 +0100 Subject: [PATCH] Test Travis-CI with MySQL + MariaDB + PostgreSQL #54 --- .travis.yml | 16 ++++++++++------ CHANGELOG | 2 ++ dsmrreader/config/test_mysql.py | 10 +++++++++- dsmrreader/config/test_postgresql.py | 13 +++++++++---- dsmrreader/config/test_sqlite.py | 14 ++++++++++++++ dsmrreader/config/travis/mysql.py | 13 +++++++++++++ dsmrreader/config/travis/postgresql.py | 13 +++++++++++++ dsmrreader/config/travis/sqlite.py | 1 + dsmrreader/config/travis/test_mysql.py | 7 ------- dsmrreader/config/travis/test_sqlite.py | 4 ---- test-all.sh | 7 +++---- 11 files changed, 74 insertions(+), 26 deletions(-) create mode 100644 dsmrreader/config/test_sqlite.py create mode 100644 dsmrreader/config/travis/mysql.py create mode 100644 dsmrreader/config/travis/postgresql.py create mode 100644 dsmrreader/config/travis/sqlite.py delete mode 100644 dsmrreader/config/travis/test_mysql.py delete mode 100644 dsmrreader/config/travis/test_sqlite.py diff --git a/.travis.yml b/.travis.yml index 944715c6c..38d5b2c6b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,12 +5,16 @@ python: - "3.4" services: + - postgresql - mysql + +addons: + postgresql: "9.3" env: - - DB=sqlite DJANGO_SETTINGS_MODULE='dsmrreader.config.travis.test_sqlite' - - DB=mysql DJANGO_SETTINGS_MODULE='dsmrreader.config.travis.test_mysql' -# - DB=postgres + - DB=sqlite DJANGO_SETTINGS_MODULE='dsmrreader.config.travis.sqlite' + - DB=mysql DJANGO_SETTINGS_MODULE='dsmrreader.config.travis.mysql' + - DB=postgresql DJANGO_SETTINGS_MODULE='dsmrreader.config.travis.postgresql' before_install: - pip install codecov @@ -18,12 +22,12 @@ before_install: install: - pip install -r dsmrreader/provisioning/requirements/base.txt - pip install -r dsmrreader/provisioning/requirements/test.txt -# - pip install -r dsmrreader/provisioning/requirements/postgresql.txt + - pip install -r dsmrreader/provisioning/requirements/postgresql.txt - pip install -r dsmrreader/provisioning/requirements/mysql.txt before_script: -# - sh -c "if [ '$DB' = 'pgsql' ]; then dropdb -U postgres --if-exists dsmrreader; fi" -# - sh -c "if [ '$DB' = 'pgsql' ]; then createdb -U postgres dsmrreader; fi" + - sh -c "if [ '$DB' = 'postgresql' ]; then dropdb -U postgres --if-exists dsmrreader; fi" + - sh -c "if [ '$DB' = 'postgresql' ]; then createdb -U postgres dsmrreader; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'drop database IF EXISTS dsmrreader;' -u root; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysqladmin create dsmrreader; fi" diff --git a/CHANGELOG b/CHANGELOG index 4f1a235a3..9fdbc9e39 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,8 @@ v0.14 (β) - 2016-xx-xx - Show exceptions in production (webinterface) (#87). - Keep Supervisor processes running (#79). - Hourly stats of 22:00:00+00 every day lack gas (#78). +- Test Travis-CI with MySQL + MariaDB + PostgreSQL (#54). +- PostgreSQL tests + nosetests + coverage failure: unrecognized configuration parameter "foreign_key_checks" (#62). - diff --git a/dsmrreader/config/test_mysql.py b/dsmrreader/config/test_mysql.py index a098af23a..f55e63a42 100644 --- a/dsmrreader/config/test_mysql.py +++ b/dsmrreader/config/test_mysql.py @@ -3,4 +3,12 @@ # Use for TESTING only: GRANT ALL PRIVILEGES ON test_dsmrreader.* TO 'dsmrreader'@'localhost'; -DATABASES['default']['ENGINE'] = 'django.db.backends.mysql' +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'dsmrreader', # Will be adjusted to 'test_*' by Django. + 'USER': 'dsmrreader', + 'PASSWORD': 'dsmrreader', + 'HOST': '127.0.0.1', + } +} diff --git a/dsmrreader/config/test_postgresql.py b/dsmrreader/config/test_postgresql.py index cec22637c..831d4e1fe 100644 --- a/dsmrreader/config/test_postgresql.py +++ b/dsmrreader/config/test_postgresql.py @@ -3,7 +3,12 @@ # Use for TESTING only: ALTER USER dsmrreader CREATEDB; -DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2' - -# For some reason nosetests can't handle postgresql. See issue #62 @ Github. -del TEST_RUNNER +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', # Sub configs should set this. + 'NAME': 'dsmrreader', # Will be adjusted to 'test_*' by Django. + 'USER': 'dsmrreader', + 'PASSWORD': 'dsmrreader', + 'HOST': '127.0.0.1', + } +} diff --git a/dsmrreader/config/test_sqlite.py b/dsmrreader/config/test_sqlite.py new file mode 100644 index 000000000..c6f53cba3 --- /dev/null +++ b/dsmrreader/config/test_sqlite.py @@ -0,0 +1,14 @@ +""" Tests with PostgreSQL backend. """ +from dsmrreader.config.test import * + + +# Use for TESTING only: ALTER USER dsmrreader CREATEDB; +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'dsmrreader', # Will be adjusted to 'test_*' by Django. + 'USER': 'dsmrreader', + 'PASSWORD': 'dsmrreader', + 'HOST': '127.0.0.1', + } +} diff --git a/dsmrreader/config/travis/mysql.py b/dsmrreader/config/travis/mysql.py new file mode 100644 index 000000000..6c022d510 --- /dev/null +++ b/dsmrreader/config/travis/mysql.py @@ -0,0 +1,13 @@ +from dsmrreader.config.test_mysql import * + + +# https://docs.travis-ci.com/user/database-setup/#MySQL +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'dsmrreader', + 'USER': 'travis', + 'PASSWORD': '', + 'HOST': '127.0.0.1', + } +} diff --git a/dsmrreader/config/travis/postgresql.py b/dsmrreader/config/travis/postgresql.py new file mode 100644 index 000000000..796e61427 --- /dev/null +++ b/dsmrreader/config/travis/postgresql.py @@ -0,0 +1,13 @@ +from dsmrreader.config.test_postgresql import * + + +# https://docs.travis-ci.com/user/database-setup/#PostgreSQL +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'dsmrreader', + 'USER': 'postgres', + 'PASSWORD': '', + 'HOST': '127.0.0.1', + } +} diff --git a/dsmrreader/config/travis/sqlite.py b/dsmrreader/config/travis/sqlite.py new file mode 100644 index 000000000..4f2c401fe --- /dev/null +++ b/dsmrreader/config/travis/sqlite.py @@ -0,0 +1 @@ +from dsmrreader.config.test_sqlite import * diff --git a/dsmrreader/config/travis/test_mysql.py b/dsmrreader/config/travis/test_mysql.py deleted file mode 100644 index fa0737539..000000000 --- a/dsmrreader/config/travis/test_mysql.py +++ /dev/null @@ -1,7 +0,0 @@ -from dsmrreader.config.test import * - - -# https://docs.travis-ci.com/user/database-setup/#MySQL -DATABASES['default']['ENGINE'] = 'django.db.backends.mysql' -DATABASES['default']['USER'] = 'travis' -DATABASES['default']['PASSWORD'] = '' diff --git a/dsmrreader/config/travis/test_sqlite.py b/dsmrreader/config/travis/test_sqlite.py deleted file mode 100644 index 8c576d297..000000000 --- a/dsmrreader/config/travis/test_sqlite.py +++ /dev/null @@ -1,4 +0,0 @@ -from dsmrreader.config.test import * - - -DATABASES['default']['ENGINE'] = 'django.db.backends.sqlite3' diff --git a/test-all.sh b/test-all.sh index 2c48ea7a4..2dac91b74 100755 --- a/test-all.sh +++ b/test-all.sh @@ -2,13 +2,12 @@ echo "" echo "--- Testing with SQLite..." -./manage.py test --settings=dsmrreader.config.test --noinput --with-coverage +./manage.py test --noinput --with-coverage --settings=dsmrreader.config.test_sqlite echo "" echo "--- Testing with PostgreSQL..." -# See issue #62 @ Github. -./manage.py test --settings=dsmrreader.config.test_postgresql --noinput +./manage.py test --noinput --with-coverage --settings=dsmrreader.config.test_postgresql echo "" echo "--- Testing with MySQL..." -./manage.py test --settings=dsmrreader.config.test_mysql --noinput --with-coverage +./manage.py test --noinput --with-coverage --settings=dsmrreader.config.test_mysql