name: build_and_test
on:
  push:
    branches: ['develop']
  pull_request:
    branches: ['develop']
# Warning : schedule is only for default branch
#  schedule:
#    - cron: '0 3 * * 1'
defaults:
  run:
    shell: bash
jobs:

  build:
    runs-on: ubuntu-latest
    container: opencfd/openfoam-dev:2212
    steps:
      - name: install git
        run: |
          sudo apt-get update && sudo apt-get install -y git
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Build sedfoam
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc && 
          export FOAM_USER_LIBBIN=$FOAM_SITE_LIBBIN && ./Allwmake -prefix=group
      - uses: actions/upload-artifact@v2
        with:
          name: sedfoam-binary
          path: /usr/lib/openfoam/openfoam2212/site

  test:
    runs-on: ubuntu-latest
    container: 
      image: opencfd/openfoam-dev:2212
    needs: [build, checkstyle, checkpep8]
    defaults:
      run:
        shell: bash
    steps:
      - name: install git and python3 packages
        run: |
          apt-get update && sudo apt-get install -y git &&
          apt-get -y install python3 python3-pip &&
          pip3 install fluidfoam 
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - uses: actions/download-artifact@v2
        with:
          name: sedfoam-binary
          path: /usr/lib/openfoam/openfoam2212/site
      - name: chmod sedfoam binary
        run: chmod a+x -R *
        working-directory: /usr/lib/openfoam/openfoam2212/site
      - name: sedfoam test1D sedim
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc && 
          cd test-ci/1DSedim && cp -f constant/forceProperties.sedim constant/forceProperties &&
          cp -f system/controlDict.sedim system/controlDict  && sudo chmod -R a+rwX ../* &&
          runuser -u sudofoam -- ./Allrun > /dev/null &&
          python3 test_Sedimentation.py
      - name: sedfoam test1D bedload
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc &&
          cd test-ci/1DSedim && cp -f constant/forceProperties.bedload constant/forceProperties &&
          cp -f system/controlDict.bedload system/controlDict &&
          runuser -u sudofoam -- ./Allrun > /dev/null && python3 test_Bedload.py

  advanced-test:
    runs-on: ubuntu-latest
    container: 
      image: opencfd/openfoam-dev:2212
    needs: [test]
    defaults:
      run:
        shell: bash
    steps:
      - name: install git and python3 packages
        run: |
          apt-get update && apt-get install -y git python3 python3-pip &&
          pip3 install fluidfoam
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - uses: actions/download-artifact@v2
        with:
          name: sedfoam-binary
          path: /usr/lib/openfoam/openfoam2212/site
      - name: chmod sedfoam binary
        run: sudo chmod a+x -R *
        working-directory: /usr/lib/openfoam/openfoam2212/site
      - name: sedfoam test1D AvalancheMuI
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc && 
          chmod -R a+rwX test-ci && cd test-ci/1DAvalancheMuI &&
          runuser -u sudofoam -- ./Allrun > /dev/null &&
          python3 test_1DAvalancheMuI.py

  advanced-test1:
    runs-on: ubuntu-latest
    container: 
      image: opencfd/openfoam-dev:2212
    needs: [test]
    defaults:
      run:
        shell: bash
    steps:
      - name: install git and python3 packages
        run: |
          apt-get update && apt-get install -y git python3 python3-pip &&
          pip3 install fluidfoam
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - uses: actions/download-artifact@v2
        with:
          name: sedfoam-binary
          path: /usr/lib/openfoam/openfoam2212/site
      - name: chmod sedfoam binary
        run: sudo chmod a+x -R *
        working-directory: /usr/lib/openfoam/openfoam2212/site
      - name: sedfoam test 1DBedLoadTurb
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc && 
          chmod -R a+rwX test-ci && cd test-ci/1DBedLoadTurb &&
          runuser -u sudofoam -- ./Allrun > /dev/null &&
          python3 test_1DBedLoadTurb.py
      - name: sedfoam test 1DBoundaryLayer
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc && cd test-ci/1DBoundaryLayer &&
          runuser -u sudofoam -- ./Allrun > /dev/null &&
          python3 test_1DBoundaryLayer.py

  advanced-test2:
    runs-on: ubuntu-latest
    container: 
      image: opencfd/openfoam-dev:2212
    needs: [test]
    defaults:
      run:
        shell: bash
    steps:
      - name: install git and python3 packages
        run: |
          apt-get update && apt-get install -y git python3 python3-pip &&
          pip3 install fluidfoam
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - uses: actions/download-artifact@v2
        with:
          name: sedfoam-binary
          path: /usr/lib/openfoam/openfoam2212/site
      - name: chmod sedfoam binary
        run: sudo chmod a+x -R *
        working-directory: /usr/lib/openfoam/openfoam2212/site
      - name: sedfoam test 1DWetAvalanche
        run: |
          shopt -s expand_aliases && source /openfoam/bash.rc && 
          chmod -R a+rwX test-ci && cd test-ci/1DWetAvalanche &&
          runuser -u sudofoam -- ./Allrun > /dev/null &&
          python3 test_1DWetAvalanche.py

  checkpep8:
    runs-on: ubuntu-latest
    steps:
      - name: install pycodestyle
        run: |
          sudo pip3 install pycodestyle
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Python Style Checker
        run: |
          pycodestyle test-ci  --max-line-length=120 &&
          pycodestyle tutorials  --max-line-length=120

  checkstyle:
    runs-on: ubuntu-latest
    steps:
      - name: install vera++
        run: |
          sudo apt-get install vera++
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Check style
        run: |
          shopt -s expand_aliases && ./foamStyleCheck/checkStyle
