stages:
  - test

before_script:
    # Create SSH configuration directory if necessary (also parents with -p, mode: read/write/exec):
    - mkdir -p --mode=700 ~/.ssh/
    # Add SSH key for jutil:
    - echo "$ID_RSA_JUTIL_PRIVATE" > ~/.ssh/id_rsa_jutil
    # Provide read access to owner (octal value code: 400) to jutil key and known_hosts with chmod:
    - chmod 400 ~/.ssh/id_rsa_jutil
    # Configure SSH to use ~/.ssh/jutil_key for iffgit.fz-juelich.de (-e allows \n):
    - echo -e "Host iffgit.fz-juelich.de\n\tIdentityFile ~/.ssh/id_rsa_jutil\n" > ~/.ssh/config
    # Add iffgit.fz-juelich.de to known_hosts (not the same key as Jutil!):
    - echo iffgit.fz-juelich.de,134.94.161.83 "$ID_RSA_IFFGIT_PUBLIC" > ~/.ssh/known_hosts
    # Provide read access to owner (octal value code: 400) to known_hosts with chmod:
    - chmod 400 ~/.ssh/known_hosts
    # Install necessary apps like git and mesa-utils (needed for GL):
    # TODO: Check if this is still needed after removing mayavi!?
    - apt-get update
    - apt-get install -y curl bzip2 git mesa-utils

test_miniconda:
  stage: test
  image: continuumio/miniconda3
  script:
    # Install requirements for pyramid:
    - conda info --envs
    - conda env create -q # -q: quiet/ no progressbar, because it spams the log!
    - source activate pyramid
    - conda info --envs
    - conda uninstall mayavi vtk -y  # TODO: necessary, because mayavi does not play nice with qt5!
    - conda install pyqt=5  # TODO: This is needed for tests to run, but breaks mayavi (not used)!
    # Install jutil via secure ssh connection:
    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
    # Execute tests:
    - python setup.py test
    # Create coverage report:
    - coverage html
  artifacts:
    paths:
      - htmlcov/

test_conda_ubuntu:
  stage: test
  image: ubuntu:16.04
  script:
    # Install miniconda:
    - curl -O -L https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
    - chmod +x Miniconda3-latest-Linux-x86_64.sh
    - ./Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3
    - export PATH="/opt/miniconda3/bin:${PATH}"
    # Install requirements for pyramid:
    - conda info --envs
    - conda env create -q # -q: quiet/ no progressbar, because it spams the log!
    - source activate pyramid
    - conda info --envs
    - conda uninstall mayavi vtk -y  # TODO: necessary, because mayavi does not play nice with qt5!
    - conda install pyqt=5  # TODO: This is needed for tests to run, but breaks mayavi (not used)!
    # Install jutil via secure ssh connection:
    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
    # Execute tests:
    - python setup.py test

test_pip_minimal:
  stage: test
  image: python:3.5
  script:
    # TODO: Different jobs with custom develop arguments? extra_requires (hyperspy, plotting)?
    # TODO: Use pip install -e .[hyperspy], etc.
    # Install requirements:
    - pip install -e .['tests']  # TODO: other case with ['all']? After getting rid of mayavi...
    # Install jutil via secure ssh connection:
    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
    # Execute tests:
    - python setup.py test

test_pip_requirements:
  stage: test
  image: python:3.5
  script:
    # Install requirements:
    - pip install -r requirements.txt  # TODO: mayavi/pyfftw commented out by hand to make work!
    # Install jutil via secure ssh connection:
    - pip install git+ssh://gitlab@iffgit.fz-juelich.de/unger/jutil.git
    # Execute tests:
    - python setup.py test

# TODO: What about windows? Better have one test (miniconda?) for windows/max/linux, each!