name: Test Package

on:
  push:
  pull_request:
  schedule:
    - cron: '0 2 * * 1'

jobs:

  flake8_tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
        with:
          python-version: '3.x'
      - name: Install flake8
        run: pip install flake8
      - name: Run flake8
        run: flake8 .

  python3_tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        os: [debian11, debian10, debian9, ubuntu21.10, ubuntu20.04, ubuntu18.04]
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
      - name: Update bash files
        run: |
          chmod +x .ci/run.sh
          chmod +x .ci/install.sh
      - name: Build the docker
        env:
          OS: ${{ matrix.os }}
        run: docker build -t ndts .ci/${OS}_py3
      - name: Run the docker
        run: docker run  --name  ndts -d -it -v `pwd`:/home/tango    ndts
      - name: install tango
        env:
          OS: ${{ matrix.os }}
        run: .ci/install.sh ${OS} 3
      - name: run basic tests
        run: .ci/run.sh 3 basic
      - name: run general tool tests
        run: .ci/run.sh 3 generaltools
      - name: run specialized tool tests
        run: .ci/run.sh 3 specializedtools
      - name: run diffractogram tests
        run: .ci/run.sh 3 diffractogram
      - name: run tangosource tests
        run: .ci/run.sh 3 tangosource
      - name: run tangofilesource tests
        run: .ci/run.sh 3 tangofilesource
      - name: run httpsource tests
        run: .ci/run.sh 3 httpsource
      - name: Stop the docker
        run: docker container stop ndts

  python2_tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        os: [debian10, debian9, ubuntu18.04]
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
      - name: Update bash files
        run: |
          chmod +x .ci/run.sh
          chmod +x .ci/install.sh
      - name: Build the docker
        env:
          OS: ${{ matrix.os }}
        run: docker build -t ndts .ci/${OS}_py2
      - name: Run the docker
        run: docker run  --name  ndts -d -it -v `pwd`:/home/tango ndts
      - name: install tango
        env:
          OS: ${{ matrix.os }}
        run: .ci/install.sh ${OS} 2
      - name: run basic tests
        run: .ci/run.sh 2 basic
      - name: run general tool tests
        run: .ci/run.sh 2 generaltools
      - name: run specialized tool tests
        run: .ci/run.sh 2 specializedtools
      - name: run diffractogram tests
        run: .ci/run.sh 2 diffractogram
      - name: run tangosource tests
        run: .ci/run.sh 2 tangosource
      - name: run tangofilesource tests
        run: .ci/run.sh 2 tangofilesource
      - name: run httpsource tests
        run: .ci/run.sh 2 httpsource
      - name: Stop the docker
        run: docker container stop ndts
