stages:
  - test

.test_template: &test_template
  stage: test
  before_script:
    - pip install --upgrade pip wheel
    # Selenium and requests can't be installed without a requests hint on Python 3.4
    - pip install --upgrade requests>=2.22.0
    - pip install --upgrade codecov coveralls flake8 mock pytest==4.6.3 pytest-cov selenium
    - pip install --upgrade -r requirements.txt
  script:
    - pip list
    - openssl version -a
    - python -m pytest -x plugins/CryptMessage/Test --color=yes
    - python -m pytest -x plugins/Bigfile/Test --color=yes
    - python -m pytest -x plugins/AnnounceLocal/Test --color=yes
    - python -m pytest -x plugins/OptionalManager/Test --color=yes
    - python -m pytest src/Test --cov=src --cov-config src/Test/coverage.ini --color=yes
    - mv plugins/disabled-Multiuser plugins/Multiuser
    - python -m pytest -x plugins/Multiuser/Test --color=yes
    - mv plugins/disabled-Bootstrapper plugins/Bootstrapper
    - python -m pytest -x plugins/Bootstrapper/Test --color=yes
    - flake8 . --count --select=E9,F63,F72,F82 --show-source --statistics --exclude=src/lib/pyaes/

test:py3.4:
  image: python:3.4.3
  <<: *test_template

test:py3.5:
  image: python:3.5.7
  <<: *test_template

test:py3.6:
  image: python:3.6.9
  <<: *test_template

test:py3.7-openssl1.1.0:
  image: python:3.7.0b5
  <<: *test_template

test:py3.7-openssl1.1.1:
  image: python:3.7.4
  <<: *test_template

test:py3.8:
  image: python:3.8.0b3
  <<: *test_template