[tox]
envlist = py38-{unit,registry,mysql,psql}
skipsdist = True

[pytest]
norecursedirs = node_modules
testpaths = ./
python_files = **/test/test*.py
confcutdir = test

[testenv]
deps =
    -r{toxinidir}/requirements.txt
    -r{toxinidir}/requirements-dev.txt
setenv =
    PYTHONDONTWRITEBYTECODE = 1
    PYTHONPATH={toxinidir}{:}{toxinidir}
    TEST=true
    registry: FILE=test/registry/registry_tests.py
    unit: FILE=""
# TODO(kleesc): Re-enable buildman tests after buildman rewrite
commands =
    python --version
    alembic upgrade head
    py.test --timeout=3600 --cov-report=html --cov-report=term-missing -x --color no --verbose --ignore=buildman/ {env:FILE} -vv {posargs}

[docker:mysql]
image = mysql:5.7
healthcheck_cmd = mysql -uroot -D information_schema -e "SELECT * FROM plugins LIMIT 0;"
healthcheck_interval = 25
healthcheck_timeout = 10
healthcheck_retries = 3
healthcheck_start_period = 25
ports = 3306:3306/tcp
environment =
    MYSQL_DATABASE=quay_ci
    MYSQL_PASSWORD=quay
    MYSQL_ALLOW_EMPTY_PASSWORD=1
    MYSQL_USER=quay

[testenv:py38-mysql]
setenv =
    PYTHONDONTWRITEBYTECODE = 1
    PYTHONPATH={toxinidir}{:}{toxinidir}
    TEST=true
    SKIP_DB_SCHEMA=true
    PYTEST_ADDOPTS=--ignore=endpoints/appr/test/
    FILE=""
docker = mysql
whitelist_internals = /bin/sh
# TODO(kleesc): Re-enable buildman tests after buildman rewrite
commands =
    python --version
    /bin/sh -c "TEST_DATABASE_URI=mysql+pymysql://quay:quay@127.0.0.1:$MYSQL_3306_TCP_PORT/quay_ci alembic upgrade head"
    /bin/sh -c "TEST_DATABASE_URI=mysql+pymysql://quay:quay@127.0.0.1:$MYSQL_3306_TCP_PORT/quay_ci py.test --timeout=3600 --cov-report=html --cov-report=term-missing -x --color no --verbose --ignore=buildman/ {env:FILE} -vv {posargs}"


[docker:postgres]
image = postgres:9.6
healthcheck_cmd = PGPASSWORD=root pg_isready -U postgres
healthcheck_interval = 5
healthcheck_timeout = 10
healthcheck_retries = 3
healthcheck_start_period = 10
environment =
    POSTGRES_DB=quay_ci
    POSTGRES_PASSWORD=quay
    POSTGRES_USER=quay

[testenv:py38-psql]
# TODO(kleesc): Re-enable buildman tests after buildman rewrite
setenv =
    PYTHONDONTWRITEBYTECODE = 1
    PYTHONPATH={toxinidir}{:}{toxinidir}
    TEST=true
    SKIP_DB_SCHEMA=true
    PYTEST_ADDOPTS=--ignore=endpoints/appr/test/
    FILE=""
docker = postgres
whitelist_internals = /bin/sh
# TODO(kleesc): Re-enable buildman tests after buildman rewrite
commands =
    python --version
    /bin/sh -c "docker exec $(docker ps -q -n 1) psql -U quay -d quay_ci -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'"
    /bin/sh -c "TEST_DATABASE_URI=postgresql://quay:quay@127.0.0.1:$POSTGRES_5432_TCP_PORT/quay_ci alembic upgrade head"
    /bin/sh -c "TEST_DATABASE_URI=postgresql://quay:quay@127.0.0.1:$POSTGRES_5432_TCP_PORT/quay_ci py.test --timeout=3600 --cov-report=html --cov-report=term-missing -x --color no --verbose --ignore=buildman/ {env:FILE} -vv {posargs}"
