#!/bin/bash

set -e

if [[ -z "${INTEGRATION_TESTS}" ]] || [[ "${INTEGRATION_TESTS}" = 0 ]]; then
  # defaults if not set
  : "${SKIP_LINT:=0}"
  : "${COV_REPORT:=term}"
  : "${COV_PORT:=8000}"

  # convert to all lowercase
  COV_REPORT=$(echo $COV_REPORT | tr '[:upper:]' '[:lower:]')

  # run linting of python and yaml files
  if [ "$SKIP_LINT" -ne 1 ]; then
      echo 'Running linting...'
      yamllint -s docker-compose.yaml
      flake8 src/ tests/ config.py
  else
      echo 'Skipping linting...'
  fi

  # set flags for pytest-cov
  COVERAGE_ARGS=""
  if [ "$COV_REPORT" != "off" ]; then
      COVERAGE_ARGS="--cov-report $COV_REPORT --cov=src"
  fi

  # run pytest with args set
  echo 'Running tests...'
  python -m pytest $TEST_ARGS --ignore=tests/integration/ tests/ $COVERAGE_ARGS

  # serve out html coverage report
  if [ "$COV_REPORT" = "html" ]; then
      echo "Serving out coverage report on port $COV_PORT..."
      python -m http.server --directory htmlcov $COV_PORT
  fi

  echo 'Done!'
elif [[ "${INTEGRATION_TESTS}" = 1 ]]; then
  echo 'Running integration tests...'
  python -m pytest tests/integration/
fi
