name: TrickOps
# This workflow is triggered on pushes to the repository.
on:
  schedule:
  - cron:  '0 0 * * 0'
  workflow_dispatch:

defaults:
  run:
    shell: bash

jobs:
  trickops-tests-ubuntu:
    name: Unit Tests Ubuntu:20.04
    runs-on: ubuntu-20.04
    container: ubuntu:20.04
    steps:
      - uses: actions/checkout@master
      - name: install dependencies
        # Note that perl is for trick-gte which TrickOps runs and qt and everything after it is for koviz
        run: |
          export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y git python3 python3-venv perl perl-modules-5.30 qtbase5-dev wget unzip g++ make flex bison
      - name: create virtual environment
        run: |
          cd share/trick/trickops/
          python3 -m venv .venv && source .venv/bin/activate && pip3 install -r requirements.txt
      - name: get and build koviz
        run: |
          cd /tmp/ && wget -q https://github.com/nasa/koviz/archive/refs/heads/master.zip && unzip master.zip
          cd /tmp/koviz-master/ &&  qmake && make
      - name: run unit and doc tests
        run: |
          cd share/trick/trickops/tests/
          source ../.venv/bin/activate
          export PATH="/tmp/koviz-master/bin:${PATH}"
          ./run_tests.py
      - uses: actions/upload-artifact@master
        if: ${{ always() }}
        with:
          name: doctests
          path: |
            share/trick/trickops/tests/*_doctest_log.txt
            /tmp/log.*

  trickops-tests-rockylinux8:
    name: Unit Tests RockyLinux8
    runs-on: ubuntu-20.04
    container: rockylinux:8
    steps:
      - uses: actions/checkout@master
      - name: install dependencies
        # Note that perl is for trick-gte which TrickOps runs and qt and everything after it is for koviz
        run: |
          dnf install -y git python3-devel which perl perl-Digest-MD5 qt5-qtbase-devel bison clang flex make gcc gcc-c++ wget
      - name: create virtual environment
        run: |
          cd share/trick/trickops/
          python3 -m venv .venv && source .venv/bin/activate && pip3 install -r requirements.txt
      - name: get and build koviz
        run: |
          cd /tmp/ && wget -q https://github.com/nasa/koviz/archive/refs/heads/master.zip && unzip master.zip
          cd /tmp/koviz-master/ &&  qmake-qt5 && make
      - name: run unit and doc tests
        run: |
          cd share/trick/trickops/tests/
          source ../.venv/bin/activate
          export PATH="/tmp/koviz-master/bin:${PATH}"
          ./run_tests.py
      - uses: actions/upload-artifact@master
        if: ${{ always() }}
        with:
          name: doctests
          path: |
            share/trick/trickops/tests/*_doctest_log.txt
            /tmp/log.*

# TODO: ExampleWorkflow.py is not included here because it needs a built Trick
#  to function correctly and I don't want to duplicate the Trick build testing
#  here to provide testing of what is essentially an example provided for
#  documentation purposes.  If we could leverage artifacts from a previous
#  stage and/or stable containers where Trick is already pre-built, we should
#  consider adding ExampleWorfklow.py to testing in this file. -Jordan 4/2021
