# SPDX-FileCopyrightText: 2021 Helmholtz-Zentrum für Umweltforschung GmbH - UFZ
#
# SPDX-License-Identifier: GPL-3.0-or-later

# ===========================================================
# preparation
# ===========================================================

variables:
  GIT_SUBMODULE_STRATEGY: recursive

default:
  image: python:3.8
  before_script:
    - pip install --upgrade pip
    - pip install pytest
    - pip install -r requirements.txt


# ===========================================================
# normal jobs (non scheduled)
# ===========================================================

# test saqc with python 3.7
python37:
  stage: test
  image: python:3.7
  script:
    - pytest tests/core tests/funcs tests/integration dios/test -Werror
    - python -m saqc --config sphinxdoc/resources/data/config.csv --data sphinxdoc/resources/data/data.csv --outfile /tmp/test.csv


# test saqc with python 3.8
python38:
  stage: test
  script:
    - pytest tests/core tests/funcs tests/integration dios/test -Werror
    - python -m saqc --config sphinxdoc/resources/data/config.csv --data sphinxdoc/resources/data/data.csv --outfile /tmp/test.csv


# test saqc with python 3.9
python39:
  stage: test
  image: python:3.9
  script:
    - pytest tests/core tests/funcs tests/integration dios/test -Werror
    - python -m saqc --config sphinxdoc/resources/data/config.csv --data sphinxdoc/resources/data/data.csv --outfile /tmp/test.csv


# check if everthing is properly formatted
black:
  stage: test
  script:
    - pip install black
    - black --check .


# make (visual) coverage in gitlab merge request diff's
coverage:
  stage: test
  allow_failure: true
  script:
    - pip install pytest-cov coverage
    - pytest --cov=saqc tests/core tests/funcs -Werror
  after_script:
    - coverage xml

  # regex to find the coverage percentage in the job output
  coverage: '/^TOTAL.+?(\d+\%)$/'

  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

# Check compliance with the REUSE specification
reuse_compliance:
  stage: test
  image:
    name: fsfe/reuse:latest
    entrypoint: [""]
  before_script:
    - echo "Override default 'before_script'..."
  script:
    - reuse lint

# make html docu with sphinx
pages:
  stage: deploy
  only:
    - develop
  except:
    - schedules
  script:
    - cd sphinxdoc/
    - pip install -r requirements_sphinx.txt
    - make doc
    - cp -r _build/html ../public
  artifacts:
    paths:
      - public


# ===========================================================
# scheduled jobs
# ===========================================================

# fuzzy testing saqc
fuzzy:
  stage: test
  only:
    - schedules
  script:
    - pytest tests/fuzzy -Werror


# test lib saqc
testLib:
  stage: test
  only:
    - schedules
  script:
    - pytest tests/lib -Werror