From 7ceb66f01b812995f9e76686a1d8a5beb50bd896 Mon Sep 17 00:00:00 2001 From: Baptiste Jonglez Date: Sun, 24 May 2020 14:15:34 +0200 Subject: [PATCH] Enable CI builds with postgresql and mariadb --- .github/workflows/test-docs.yml | 47 ++++++++++++++++++- .../tests/common/ihatemoney_testcase.py | 6 ++- setup.cfg | 2 + tox.ini | 1 + 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml index b5c67db0..0efdffd9 100644 --- a/.github/workflows/test-docs.yml +++ b/.github/workflows/test-docs.yml @@ -10,10 +10,40 @@ jobs: build: runs-on: ubuntu-latest + + # Use postgresql and MariaDB versions of Debian buster + services: + postgres: + image: postgres:11 + ports: + - 5432:5432 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ihatemoney + POSTGRES_DB: ihatemoney_ci + options: + --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + mariadb: + image: mariadb:10.3 + env: + MARIADB_ROOT_PASSWORD: ihatemoney + MARIADB_DATABASE: ihatemoney_ci + options: >- + --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + ports: + - 3306:3306 + strategy: fail-fast: false matrix: python-version: [3.6, 3.7, 3.8, 3.9] + database: [sqlite] + # Test other databases only with one version of Python (Debian buster has 3.7) + include: + - python-version: 3.7 + database: postgresql + - python-version: 3.7 + database: mariadb steps: - uses: actions/checkout@v2 @@ -25,9 +55,22 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install tox - - name: Run Tox - # Run tox using the version of Python in `PATH` + # Run tox using the version of Python in `PATH` + - name: Run Tox with sqlite run: tox -e py + if: matrix.database == 'sqlite' + env: + TESTING_SQLALCHEMY_DATABASE_URI: 'sqlite:///budget.db' + - name: Run Tox with postgresql + run: tox -e py + if: matrix.database == 'postgresql' + env: + TESTING_SQLALCHEMY_DATABASE_URI: 'postgresql+psycopg2://postgres:ihatemoney@localhost:5432/ihatemoney_ci' + - name: Run Tox with mariadb + run: tox -e py + if: matrix.database == 'mariadb' + env: + TESTING_SQLALCHEMY_DATABASE_URI: 'mysql+pymysql://root:ihatemoney@localhost:3306/ihatemoney_ci' - name: Run Lint & Docs run: tox -e lint_docs if: matrix.python-version == '3.8' diff --git a/ihatemoney/tests/common/ihatemoney_testcase.py b/ihatemoney/tests/common/ihatemoney_testcase.py index 39b2919e..b57fe3da 100644 --- a/ihatemoney/tests/common/ihatemoney_testcase.py +++ b/ihatemoney/tests/common/ihatemoney_testcase.py @@ -1,3 +1,5 @@ +import os + from flask_testing import TestCase from werkzeug.security import generate_password_hash @@ -58,7 +60,9 @@ class BaseTestCase(TestCase): class IhatemoneyTestCase(BaseTestCase): - SQLALCHEMY_DATABASE_URI = "sqlite://" + SQLALCHEMY_DATABASE_URI = os.environ.get( + "TESTING_SQLALCHEMY_DATABASE_URI", "sqlite://" + ) TESTING = True WTF_CSRF_ENABLED = False # Simplifies the tests. diff --git a/setup.cfg b/setup.cfg index 1408884d..dbb01022 100644 --- a/setup.cfg +++ b/setup.cfg @@ -51,6 +51,8 @@ dev = pytest>=5.4.1 tox>=3.14.6 zest.releaser>=6.20.1 + psycopg2-binary>=2.8.5 + PyMySQL>=0.9,<0.10 doc = Sphinx==4.0.3 diff --git a/tox.ini b/tox.ini index c358574d..f7817ef3 100644 --- a/tox.ini +++ b/tox.ini @@ -3,6 +3,7 @@ envlist = py39,py38,py37,py36,lint_docs skip_missing_interpreters = True [testenv] +passenv = TESTING_SQLALCHEMY_DATABASE_URI commands = python --version