clone:
    hg:
        image: plugins/hg
        environment:
            - HG_SHARE_POOL=/root/.cache/hg
        volumes:
            - cache:/root/.cache

pipeline:
    tox:
        image: ${IMAGE}
        environment:
            - CFLAGS=-O0
            - DB_CACHE=/cache
            - TOX_TESTENV_PASSENV=CFLAGS DB_CACHE CI_BUILD_NUMBER CI_JOB_NUMBER CI_JOB_ID
            - POSTGRESQL_URI=postgresql://postgres@postgresql:5432/
        commands:
            - echo "[extensions]" >> /root/.hgrc
            - echo "hgext.share =" >> /root/.hgrc
            - echo "[share]" >> /root/.hgrc
            - echo "pool = /root/.cache/hg" >> /root/.hgrc
            - pip install tox
            - tox -e "${TOXENV}-${DATABASE}"
        volumes:
            - cache:/root/.cache
    check_dist:
        image: ${IMAGE}
        commands:
            - pip install twine
            - python setup.py sdist
            - twine check dist/*
        volumes:
            - cache:/root/.cache
    check_doc:
        image: ${IMAGE}
        commands:
            - pip install sphinx
            - python -m sphinx -T -E -W -n -b html doc _build/html
            - python -m sphinx -T -E -W -n -b linkcheck doc _build
        volumes:
            - cache:/root/.cache

services:
    postgresql:
        image: postgres
        environment:
            - POSTGRES_HOST_AUTH_METHOD=trust
        command: "-c fsync=off -c synchronous_commit=off -c full_page_writes=off"
        when:
            matrix:
                DATABASE: postgresql

matrix:
    include:
        - IMAGE: python:3.7
          TOXENV: py37
          DATABASE: sqlite
        - IMAGE: python:3.7
          TOXENV: py37
          DATABASE: postgresql
        - IMAGE: python:3.8
          TOXENV: py38
          DATABASE: sqlite
        - IMAGE: python:3.8
          TOXENV: py38
          DATABASE: postgresql
        - IMAGE: python:3.9
          TOXENV: py39
          DATABASE: sqlite
        - IMAGE: python:3.9
          TOXENV: py39
          DATABASE: postgresql
        - IMAGE: python:3.10
          TOXENV: py310
          DATABASE: sqlite
        - IMAGE: python:3.10
          TOXENV: py310
          DATABASE: postgresql