---
include:
  - project: shore/ci-templates
    file: templates/pre-commit.yml
  - project: shore/ci-templates
    file: templates/python.yml
  - project: shore/ci-templates
    file: templates/gitlab-release.yml

test:
  stage: test
  image: $project:$version-slim
  before_script:
    - apt-get update
    - >-
      apt-get install -y
      bats
      build-essential
      git
      libdbus-1-dev
      libffi-dev
      libglib2.0-dev
      libssl-dev
      wget
    # yamllint disable-line rule:line-length
    - wget https://github.com/cloudbees-oss/juxr/releases/download/0.1.22/juxr-x86_64-unknown-linux-gnu.tar.gz -O - | tar -xzC /usr/local/bin
    - |-
      if [ "$project" = 'pypy' ]
      then
        ln -sf /opt/pypy/bin/pypy "/usr/local/bin/python$version"
      fi
    - pip install pipenv
    - pipenv install --dev --python=$version
  script:
    - pipenv run bats | tee results.tap
    - pipenv run doctest --junit-xml results/doctest.xml
  after_script:
    - juxr tap --name bats --output results/ -- cat results.tap
  variables:
    XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache"
    PIPENV_VENV_IN_PROJECT: "1"
    LANG: C.UTF-8
    PIPENV_SKIP_LOCK: 1
  cache:
    key: "$CI_JOB_NAME"
    paths:
      - .cache/
      - .venv/
  artifacts:
    reports:
      junit: results/*.xml
  parallel:
    matrix:
      - project: python
        version:
          - "2.7"
          - "3.6"
          - "3.7"
          - "3.8"
          - "3.9"
      - project: pypy
        version:
          - "2.7"
          - "3.6"
          - "3.7"
